aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/hcl
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/hcl')
-rw-r--r--runtime/queries/hcl/folds.scm6
-rw-r--r--runtime/queries/hcl/highlights.scm118
-rw-r--r--runtime/queries/hcl/indents.scm16
-rw-r--r--runtime/queries/hcl/injections.scm7
4 files changed, 147 insertions, 0 deletions
diff --git a/runtime/queries/hcl/folds.scm b/runtime/queries/hcl/folds.scm
new file mode 100644
index 000000000..e0c5313a2
--- /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 000000000..4fb7d1fca
--- /dev/null
+++ b/runtime/queries/hcl/highlights.scm
@@ -0,0 +1,118 @@
+; highlights.scm
+[
+ "!"
+ "\*"
+ "/"
+ "%"
+ "\+"
+ "-"
+ ">"
+ ">="
+ "<"
+ "<="
+ "=="
+ "!="
+ "&&"
+ "||"
+] @operator
+
+[
+ "{"
+ "}"
+ "["
+ "]"
+ "("
+ ")"
+] @punctuation.bracket
+
+[
+ "."
+ ".*"
+ ","
+ "[*]"
+] @punctuation.delimiter
+
+[
+ (ellipsis)
+ "\?"
+ "=>"
+] @punctuation.special
+
+[
+ ":"
+ "="
+] @none
+
+[
+ "for"
+ "endfor"
+ "in"
+] @keyword.repeat
+
+[
+ "if"
+ "else"
+ "endif"
+] @keyword.conditional
+
+[
+ (quoted_template_start) ; "
+ (quoted_template_end) ; "
+ (template_literal) ; non-interpolation/directive content
+] @string
+
+[
+ (heredoc_identifier) ; END
+ (heredoc_start) ; << or <<-
+] @punctuation.delimiter
+
+[
+ (template_interpolation_start) ; ${
+ (template_interpolation_end) ; }
+ (template_directive_start) ; %{
+ (template_directive_end) ; }
+ (strip_marker) ; ~
+] @punctuation.special
+
+(numeric_lit) @number
+
+(bool_lit) @boolean
+
+(null_lit) @constant
+
+(comment) @comment @spell
+
+(identifier) @variable
+
+(body
+ (block
+ (identifier) @keyword))
+
+(body
+ (block
+ (body
+ (block
+ (identifier) @type))))
+
+(function_call
+ (identifier) @function)
+
+(attribute
+ (identifier) @variable.member)
+
+; { key: val }
+;
+; highlight identifier keys as though they were block attributes
+(object_elem
+ key: (expression
+ (variable_expr
+ (identifier) @variable.member)))
+
+; var.foo, data.bar
+;
+; first element in get_attr is a variable.builtin or a reference to a variable.builtin
+(expression
+ (variable_expr
+ (identifier) @variable.builtin)
+ (get_attr
+ (identifier) @variable.member))
diff --git a/runtime/queries/hcl/indents.scm b/runtime/queries/hcl/indents.scm
new file mode 100644
index 000000000..1d7dc49d9
--- /dev/null
+++ b/runtime/queries/hcl/indents.scm
@@ -0,0 +1,16 @@
+[
+ (block)
+ (object)
+ (tuple)
+ (function_call)
+] @indent.begin
+
+[
+ "]"
+ ")"
+ "}"
+] @indent.branch @indent.end
+
+(comment) @indent.auto
+
+(ERROR) @indent.auto
diff --git a/runtime/queries/hcl/injections.scm b/runtime/queries/hcl/injections.scm
new file mode 100644
index 000000000..b68f4caea
--- /dev/null
+++ b/runtime/queries/hcl/injections.scm
@@ -0,0 +1,7 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+(heredoc_template
+ (template_literal) @injection.content
+ (heredoc_identifier) @injection.language
+ (#downcase! @injection.language))