aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaakko Paju2024-01-08 02:04:43 +0000
committerGitHub2024-01-08 02:04:43 +0000
commita32d537d0ab61c29dca556d6ffe35431d9f4f1d1 (patch)
treeaddf933a64dc7a644015987ff9d939dfc5dfedc6
parentf8ae2bc61b0fee8b2820c07f10f25ee23c13af7f (diff)
Add HOCON language support (#9203)
* Add HOCON language support * Remove error query Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * Change include query * Fix query error --------- Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml12
-rw-r--r--runtime/queries/hocon/highlights.scm31
-rw-r--r--runtime/queries/hocon/indents.scm10
4 files changed, 54 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 0c5b35cc..ba68e206 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -68,6 +68,7 @@
| haskell-persistent | ✓ | | | |
| hcl | ✓ | | ✓ | `terraform-ls` |
| heex | ✓ | ✓ | | `elixir-ls` |
+| hocon | ✓ | | ✓ | |
| hosts | ✓ | | | |
| html | ✓ | | | `vscode-html-language-server` |
| hurl | ✓ | | ✓ | |
diff --git a/languages.toml b/languages.toml
index a013dab8..77ed0eb6 100644
--- a/languages.toml
+++ b/languages.toml
@@ -3013,3 +3013,15 @@ file-types = ["janet"]
comment-token = "#"
indent = { tab-width = 2, unit = " " }
grammar = "clojure"
+
+[[language]]
+name = "hocon"
+scope = "source.conf"
+file-types = ["conf"]
+comment-token = "#"
+auto-format = true
+indent = { tab-width = 2, unit = " " }
+
+[[grammar]]
+name = "hocon"
+source = { git = "https://github.com/antosha417/tree-sitter-hocon", rev = "c390f10519ae69fdb03b3e5764f5592fb6924bcc" }
diff --git a/runtime/queries/hocon/highlights.scm b/runtime/queries/hocon/highlights.scm
new file mode 100644
index 00000000..d1aa38a2
--- /dev/null
+++ b/runtime/queries/hocon/highlights.scm
@@ -0,0 +1,31 @@
+(comment) @comment
+
+(null) @constant.builtin
+[(true) (false)] @constant.builtin.boolean
+(number) @constant.numeric
+(string) @string
+(multiline_string) @string
+(string (escape_sequence) @constant.character.escape)
+(unquoted_string) @string
+
+(value [":" "=" "+=" ] @operator)
+
+(substitution (_) @string)
+(substitution ["${" "${?" "}"] @punctuation.special)
+
+[
+ "url"
+ "file"
+ "classpath"
+ "required"
+] @function.builtin
+
+(include) @keyword.directive
+
+[ "(" ")" "[" "]" "{" "}" ] @punctuation.bracket
+
+(unit) @keyword
+(path (_) @keyword)
+(unquoted_path "." @punctuation.delimiter)
+[ "," ] @punctuation.delimiter
+
diff --git a/runtime/queries/hocon/indents.scm b/runtime/queries/hocon/indents.scm
new file mode 100644
index 00000000..27c2c988
--- /dev/null
+++ b/runtime/queries/hocon/indents.scm
@@ -0,0 +1,10 @@
+[
+ (object)
+ (array)
+] @indent
+
+[
+ "]"
+ "}"
+] @outdent
+