aboutsummaryrefslogtreecommitdiffstats
path: root/queries/puppet
diff options
context:
space:
mode:
authorAmaan Qureshi <amaanq12@gmail.com>2023-04-26 07:32:41 -0400
committerAmaan Qureshi <amaanq12@gmail.com>2023-04-26 19:29:01 -0400
commitfe3afeaa73cbf4b65a2cc603a6ba04c965dbe051 (patch)
treea22f62ecae8e5a224c0ec98fad7df601782279b7 /queries/puppet
parentfix: add `-f` to `mv` to avoid errors when updating (diff)
downloadnvim-treesitter-fe3afeaa73cbf4b65a2cc603a6ba04c965dbe051.tar
nvim-treesitter-fe3afeaa73cbf4b65a2cc603a6ba04c965dbe051.tar.gz
nvim-treesitter-fe3afeaa73cbf4b65a2cc603a6ba04c965dbe051.tar.bz2
nvim-treesitter-fe3afeaa73cbf4b65a2cc603a6ba04c965dbe051.tar.lz
nvim-treesitter-fe3afeaa73cbf4b65a2cc603a6ba04c965dbe051.tar.xz
nvim-treesitter-fe3afeaa73cbf4b65a2cc603a6ba04c965dbe051.tar.zst
nvim-treesitter-fe3afeaa73cbf4b65a2cc603a6ba04c965dbe051.zip
feat: add puppet
Diffstat (limited to 'queries/puppet')
-rw-r--r--queries/puppet/folds.scm13
-rw-r--r--queries/puppet/highlights.scm194
-rw-r--r--queries/puppet/indents.scm24
-rw-r--r--queries/puppet/injections.scm4
-rw-r--r--queries/puppet/locals.scm46
5 files changed, 281 insertions, 0 deletions
diff --git a/queries/puppet/folds.scm b/queries/puppet/folds.scm
new file mode 100644
index 000000000..c8fad6f92
--- /dev/null
+++ b/queries/puppet/folds.scm
@@ -0,0 +1,13 @@
+[
+ (block)
+ (defined_resource_type)
+ (parameter_list)
+ (attribute_type_entry)
+ (resource_declaration)
+ (selector)
+ (method_call)
+ (case_statement)
+ (hash)
+ (array)
+ (comment)
+] @fold
diff --git a/queries/puppet/highlights.scm b/queries/puppet/highlights.scm
new file mode 100644
index 000000000..889aabc65
--- /dev/null
+++ b/queries/puppet/highlights.scm
@@ -0,0 +1,194 @@
+; Variables
+
+(identifier) @variable
+
+; Includes
+
+"include" @include
+
+(include_statement (identifier) @type)
+
+(include_statement (class_identifier (identifier) @type . ))
+
+; Keywords
+
+[
+ "class"
+ "inherits"
+ "node"
+ "type"
+ "tag"
+] @keyword
+
+[
+ "define"
+ "function"
+] @keyword.function
+
+[
+ "if"
+ "elsif"
+ "else"
+ "case"
+] @conditional
+
+(default_case "default" @conditional)
+
+; Properties
+
+(attribute name: (identifier) @property)
+(attribute name: (variable (identifier) @property))
+
+; Parameters
+
+(lambda (variable (identifier) @parameter))
+
+(parameter (variable (identifier) @parameter))
+
+(function_call (identifier) @parameter)
+
+(method_call (identifier) @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) @method . ))
+
+(function_call
+ (class_identifier (identifier) @method.call . ))
+
+(defined_resource_type
+ "define" . (class_identifier (identifier) @method . ))
+
+(method_call
+ "." . (identifier) @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) @namespace)
+
+; 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) @float
+
+(string) @string
+
+(escape_sequence) @string.escape
+
+(regex) @string.regex
+
+(boolean) @boolean
+
+[
+ (undef)
+ (default)
+] @variable.builtin
+
+; Comments
+
+(comment) @comment @spell
+
+; Errors
+
+(ERROR) @error
diff --git a/queries/puppet/indents.scm b/queries/puppet/indents.scm
new file mode 100644
index 000000000..3522fe2f4
--- /dev/null
+++ b/queries/puppet/indents.scm
@@ -0,0 +1,24 @@
+[
+ (block)
+ (defined_resource_type)
+ (parameter_list)
+ (attribute_type_entry)
+ (resource_declaration)
+ (selector)
+ (method_call)
+ (case_statement)
+ (hash)
+ (array)
+] @indent.begin
+
+[
+ "}"
+ "]"
+ ")"
+] @indent.branch @indent.end
+
+[
+ (string)
+ (comment)
+ (ERROR)
+] @indent.auto
diff --git a/queries/puppet/injections.scm b/queries/puppet/injections.scm
new file mode 100644
index 000000000..a81069600
--- /dev/null
+++ b/queries/puppet/injections.scm
@@ -0,0 +1,4 @@
+((regex) @regex
+ (#offset! @regex 0 1 0 -1))
+
+(comment) @comment
diff --git a/queries/puppet/locals.scm b/queries/puppet/locals.scm
new file mode 100644
index 000000000..d9d903a46
--- /dev/null
+++ b/queries/puppet/locals.scm
@@ -0,0 +1,46 @@
+; Scopes
+
+[
+ (block)
+ (defined_resource_type)
+ (parameter_list)
+ (attribute_type_entry)
+ (class_definition)
+ (node_definition)
+ (resource_declaration)
+ (selector)
+ (method_call)
+ (case_statement)
+ (hash)
+ (array)
+] @scope
+
+; References
+
+[
+ (identifier)
+ (class_identifier)
+ (variable)
+] @reference
+
+; Definitions
+
+(attribute [(identifier) (variable)] @definition.field)
+
+(function_declaration
+ [(identifier) (class_identifier)] @definition.function)
+
+(include_statement [(identifier) (class_identifier)] @definition.import)
+
+(parameter (variable) @definition.parameter)
+
+(class_definition
+ [(identifier) (class_identifier)] @definition.type)
+
+(node_definition
+ (node_name (identifier) @definition.type))
+
+(resource_declaration
+ [(identifier) (class_identifier)] @definition.type)
+
+(assignment . (variable) @definition.var)