aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/puppet')
-rw-r--r--runtime/queries/puppet/folds.scm13
-rw-r--r--runtime/queries/puppet/highlights.scm238
-rw-r--r--runtime/queries/puppet/indents.scm23
-rw-r--r--runtime/queries/puppet/injections.scm6
-rw-r--r--runtime/queries/puppet/locals.scm64
5 files changed, 344 insertions, 0 deletions
diff --git a/runtime/queries/puppet/folds.scm b/runtime/queries/puppet/folds.scm
new file mode 100644
index 000000000..78800fe4c
--- /dev/null
+++ b/runtime/queries/puppet/folds.scm
@@ -0,0 +1,13 @@
+[
+ (block)
+ (defined_resource_type)
+ (parameter_list)
+ (attribute_type_entry)
+ (resource_declaration)
+ (selector)
+ (iterator_statement)
+ (case_statement)
+ (hash)
+ (array)
+ (comment)
+] @fold
diff --git a/runtime/queries/puppet/highlights.scm b/runtime/queries/puppet/highlights.scm
new file mode 100644
index 000000000..10621930f
--- /dev/null
+++ b/runtime/queries/puppet/highlights.scm
@@ -0,0 +1,238 @@
+; Variables
+(identifier) @variable
+
+; Includes
+"include" @keyword.import
+
+(include_statement
+ (identifier) @type)
+
+(include_statement
+ (class_identifier
+ (identifier) @type .))
+
+; Keywords
+[
+ "inherits"
+ "node"
+ "tag"
+ "require"
+] @keyword
+
+[
+ "type"
+ "class"
+] @keyword.type
+
+[
+ "define"
+ "function"
+] @keyword.function
+
+[
+ "if"
+ "elsif"
+ "else"
+ "unless"
+ "case"
+] @keyword.conditional
+
+(default_case
+ "default" @keyword.conditional)
+
+; Attributes
+(attribute
+ name: (identifier) @attribute)
+
+(attribute
+ name: (variable
+ (identifier) @attribute))
+
+; Parameters
+(lambda
+ (variable
+ (identifier) @variable.parameter))
+
+(parameter
+ (variable
+ (identifier) @variable.parameter))
+
+(function_call
+ (identifier) @variable.parameter)
+
+(iterator_statement
+ (variable) @variable.parameter)
+
+; Functions
+(function_declaration
+ "function"
+ .
+ (identifier) @function)
+
+(function_call
+ (identifier) @function.call
+ "(")
+
+(defined_resource_type
+ "define"
+ .
+ (identifier) @function)
+
+; Methods
+(function_declaration
+ "function"
+ .
+ (class_identifier
+ (identifier) @function.method .))
+
+(function_call
+ (class_identifier
+ (identifier) @function.method.call .))
+
+(defined_resource_type
+ "define"
+ .
+ (class_identifier
+ (identifier) @function.method .))
+
+(function_call
+ (field_expression
+ "."
+ (identifier) @function.method.call)
+ "(")
+
+; Types
+(type) @type
+
+(builtin_type) @type.builtin
+
+(class_definition
+ (identifier) @type)
+
+(class_definition
+ (class_identifier
+ (identifier) @type .))
+
+(class_inherits
+ (identifier) @type)
+
+(class_inherits
+ (class_identifier
+ (identifier) @type .))
+
+(resource_declaration
+ (identifier) @type)
+
+(resource_declaration
+ (class_identifier
+ (identifier) @type .))
+
+(node_definition
+ (node_name
+ (identifier) @type))
+
+((identifier) @type
+ (#lua-match? @type "^[A-Z]"))
+
+((identifier) @type.builtin
+ (#any-of? @type.builtin
+ "Boolean" "Integer" "Float" "String" "Array" "Hash" "Regexp" "Variant" "Data" "Undef" "Default"
+ "File"))
+
+; "Namespaces"
+(class_identifier
+ .
+ (identifier) @module)
+
+; Operators
+[
+ "or"
+ "and"
+ "in"
+] @keyword.operator
+
+[
+ "="
+ "+="
+ "->"
+ "~>"
+ "<<|"
+ "<|"
+ "|>"
+ "|>>"
+ "?"
+ ">"
+ ">="
+ "<="
+ "<"
+ "=="
+ "!="
+ "<<"
+ ">>"
+ "+"
+ "-"
+ "*"
+ "/"
+ "%"
+ "=~"
+ "!~"
+] @operator
+
+; Punctuation
+[
+ "|"
+ "."
+ ","
+ ";"
+ ":"
+ "::"
+ "=>"
+] @punctuation.delimiter
+
+[
+ "{"
+ "}"
+] @punctuation.bracket
+
+[
+ "["
+ "]"
+] @punctuation.bracket
+
+[
+ "("
+ ")"
+] @punctuation.bracket
+
+(interpolation
+ [
+ "${"
+ "}"
+ ] @punctuation.special)
+
+[
+ "$"
+ "@"
+ "@@"
+] @punctuation.special
+
+; Literals
+(number) @number
+
+(float) @number.float
+
+(string) @string
+
+(escape_sequence) @string.escape
+
+(regex) @string.regexp
+
+(boolean) @boolean
+
+[
+ (undef)
+ (default)
+] @variable.builtin
+
+; Comments
+(comment) @comment @spell
diff --git a/runtime/queries/puppet/indents.scm b/runtime/queries/puppet/indents.scm
new file mode 100644
index 000000000..71c882f33
--- /dev/null
+++ b/runtime/queries/puppet/indents.scm
@@ -0,0 +1,23 @@
+[
+ (block)
+ (defined_resource_type)
+ (parameter_list)
+ (attribute_type_entry)
+ (resource_declaration)
+ (selector)
+ (case_statement)
+ (hash)
+ (array)
+] @indent.begin
+
+[
+ "}"
+ "]"
+ ")"
+] @indent.branch @indent.end
+
+[
+ (string)
+ (comment)
+ (ERROR)
+] @indent.auto
diff --git a/runtime/queries/puppet/injections.scm b/runtime/queries/puppet/injections.scm
new file mode 100644
index 000000000..caa10a2b0
--- /dev/null
+++ b/runtime/queries/puppet/injections.scm
@@ -0,0 +1,6 @@
+((regex) @injection.content
+ (#set! injection.language "regex")
+ (#offset! @injection.content 0 1 0 -1))
+
+((comment) @injection.content
+ (#set! injection.language "comment"))
diff --git a/runtime/queries/puppet/locals.scm b/runtime/queries/puppet/locals.scm
new file mode 100644
index 000000000..f145fffbc
--- /dev/null
+++ b/runtime/queries/puppet/locals.scm
@@ -0,0 +1,64 @@
+; Scopes
+[
+ (block)
+ (defined_resource_type)
+ (parameter_list)
+ (attribute_type_entry)
+ (class_definition)
+ (node_definition)
+ (resource_declaration)
+ (selector)
+ (iterator_statement)
+ (case_statement)
+ (hash)
+ (array)
+] @local.scope
+
+; References
+[
+ (identifier)
+ (class_identifier)
+ (variable)
+] @local.reference
+
+; Definitions
+(attribute
+ [
+ (identifier)
+ (variable)
+ ] @local.definition.field)
+
+(function_declaration
+ [
+ (identifier)
+ (class_identifier)
+ ] @local.definition.function)
+
+(include_statement
+ [
+ (identifier)
+ (class_identifier)
+ ] @local.definition.import)
+
+(parameter
+ (variable) @local.definition.parameter)
+
+(class_definition
+ [
+ (identifier)
+ (class_identifier)
+ ] @local.definition.type)
+
+(node_definition
+ (node_name
+ (identifier) @local.definition.type))
+
+(resource_declaration
+ [
+ (identifier)
+ (class_identifier)
+ ] @local.definition.type)
+
+(assignment
+ .
+ (variable) @local.definition.var)