diff options
author | Michael Daffin | 2022-02-25 08:48:20 +0000 |
---|---|---|
committer | GitHub | 2022-02-25 08:48:20 +0000 |
commit | 93ec42d06e6c7b8c157fd17a1ed40dda3ee91bf3 (patch) | |
tree | 4d1cfb264f16887f99842b7829fb0d7ddfd73ec7 /runtime/queries/hcl | |
parent | a494f47a5df543a3ab8d6530a5acbc2a5bd04d44 (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/queries/hcl')
-rw-r--r-- | runtime/queries/hcl/folds.scm | 6 | ||||
-rw-r--r-- | runtime/queries/hcl/highlights.scm | 100 | ||||
-rw-r--r-- | runtime/queries/hcl/indents.toml | 13 | ||||
-rw-r--r-- | runtime/queries/hcl/injections.scm | 2 |
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")) |