aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorMichael Daffin2022-02-25 08:48:20 +0000
committerGitHub2022-02-25 08:48:20 +0000
commit93ec42d06e6c7b8c157fd17a1ed40dda3ee91bf3 (patch)
tree4d1cfb264f16887f99842b7829fb0d7ddfd73ec7 /runtime
parenta494f47a5df543a3ab8d6530a5acbc2a5bd04d44 (diff)
Add support for HCL language (#1705)
Queries based on the neovims ones: https://github.com/nvim-treesitter/nvim-treesitter/tree/master/queries/hcl and modified for helix support.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/queries/hcl/folds.scm6
-rw-r--r--runtime/queries/hcl/highlights.scm100
-rw-r--r--runtime/queries/hcl/indents.toml13
-rw-r--r--runtime/queries/hcl/injections.scm2
4 files changed, 121 insertions, 0 deletions
diff --git a/runtime/queries/hcl/folds.scm b/runtime/queries/hcl/folds.scm
new file mode 100644
index 00000000..cb20b2aa
--- /dev/null
+++ b/runtime/queries/hcl/folds.scm
@@ -0,0 +1,6 @@
+[
+ (comment)
+ (block)
+ (heredoc_template)
+ (object)
+] @fold
diff --git a/runtime/queries/hcl/highlights.scm b/runtime/queries/hcl/highlights.scm
new file mode 100644
index 00000000..03b3e525
--- /dev/null
+++ b/runtime/queries/hcl/highlights.scm
@@ -0,0 +1,100 @@
+(ERROR) @error
+
+; { key: val }
+
+(object_elem val: (expression
+ (variable_expr
+ (identifier) @type.builtin (#match? @type.builtin "^(bool|string|number|object|tuple|list|map|set|any)$"))))
+
+(get_attr (identifier) @variable.builtin (#match? @variable.builtin "^(root|cwd|module)$"))
+(variable_expr (identifier) @variable.builtin (#match? @variable.builtin "^(var|local|path)$"))
+((identifier) @type.builtin (#match? @type.builtin "^(bool|string|number|object|tuple|list|map|set|any)$"))
+((identifier) @keyword (#match? @keyword "^(module|root|cwd|resource|variable|data|locals|terraform|provider|output)$"))
+
+; highlight identifier keys as though they were block attributes
+(object_elem key: (expression (variable_expr (identifier) @variable.other.member)))
+
+(attribute (identifier) @variable.other.member)
+(function_call (identifier) @function.method)
+(block (identifier) @type.builtin)
+
+(identifier) @variable
+(comment) @comment
+(null_lit) @constant.builtin
+(numeric_lit) @constant.number
+(bool_lit) @constant.builtin.boolean
+
+[
+ (template_interpolation_start) ; ${
+ (template_interpolation_end) ; }
+ (template_directive_start) ; %{
+ (template_directive_end) ; }
+ (strip_marker) ; ~
+] @punctuation.special
+
+[
+ (heredoc_identifier) ; <<END
+ (heredoc_start) ; END
+] @punctuation.delimiter
+
+[
+ (quoted_template_start) ; "
+ (quoted_template_end); "
+ (template_literal) ; non-interpolation/directive content
+] @string
+
+[
+ "if"
+ "else"
+ "endif"
+] @keyword.control.conditional
+
+[
+ "for"
+ "endfor"
+ "in"
+] @keyword.control.repeat
+
+[
+ ":"
+ "="
+] @none
+
+[
+ (ellipsis)
+ "\?"
+ "=>"
+] @punctuation.special
+
+[
+ "."
+ ".*"
+ ","
+ "[*]"
+] @punctuation.delimiter
+
+[
+ "{"
+ "}"
+ "["
+ "]"
+ "("
+ ")"
+] @punctuation.bracket
+
+[
+ "!"
+ "\*"
+ "/"
+ "%"
+ "\+"
+ "-"
+ ">"
+ ">="
+ "<"
+ "<="
+ "=="
+ "!="
+ "&&"
+ "||"
+] @operator
diff --git a/runtime/queries/hcl/indents.toml b/runtime/queries/hcl/indents.toml
new file mode 100644
index 00000000..b0d4a3f0
--- /dev/null
+++ b/runtime/queries/hcl/indents.toml
@@ -0,0 +1,13 @@
+indent = [
+ "object",
+ "block",
+ "tuple",
+ "for_tuple_expr",
+ "for_object_expr"
+]
+
+outdent = [
+ "object_end",
+ "block_end",
+ "tuple_end"
+]
diff --git a/runtime/queries/hcl/injections.scm b/runtime/queries/hcl/injections.scm
new file mode 100644
index 00000000..fd69161a
--- /dev/null
+++ b/runtime/queries/hcl/injections.scm
@@ -0,0 +1,2 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))