diff options
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | lockfile.json | 3 | ||||
| -rw-r--r-- | lua/nvim-treesitter/parsers.lua | 8 | ||||
| -rw-r--r-- | queries/puppet/folds.scm | 13 | ||||
| -rw-r--r-- | queries/puppet/highlights.scm | 194 | ||||
| -rw-r--r-- | queries/puppet/indents.scm | 24 | ||||
| -rw-r--r-- | queries/puppet/injections.scm | 4 | ||||
| -rw-r--r-- | queries/puppet/locals.scm | 46 |
8 files changed, 293 insertions, 0 deletions
@@ -296,6 +296,7 @@ We are looking for maintainers to add more parsers and to write query files for - [x] [proto](https://github.com/mitchellh/tree-sitter-proto) (maintained by @fsouza) - [x] [prql](https://github.com/PRQL/tree-sitter-prql) (maintained by @matthias-Q) - [x] [pug](https://github.com/zealot128/tree-sitter-pug) (experimental, maintained by @zealot128) +- [x] [puppet](https://github.com/amaanq/tree-sitter-puppet) (maintained by @amaanq) - [x] [python](https://github.com/tree-sitter/tree-sitter-python) (maintained by @stsewd, @theHamsta) - [x] [ql](https://github.com/tree-sitter/tree-sitter-ql) (maintained by @pwntester) - [x] [qmldir](https://github.com/Decodetalkers/tree-sitter-qmldir) (maintained by @amaanq) diff --git a/lockfile.json b/lockfile.json index c27eba30c..4b2b02730 100644 --- a/lockfile.json +++ b/lockfile.json @@ -368,6 +368,9 @@ "pug": { "revision": "884e225b5ecca5d885ae627275f16ef648acd42e" }, + "puppet": { + "revision": "5e1bb979ea71efc0860d4bc56eb3b3f7a670d6ec" + }, "python": { "revision": "62827156d01c74dc1538266344e788da74536b8a" }, diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index b3fc36313..14c2b6999 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -1111,6 +1111,14 @@ list.pug = { experimental = true, } +list.puppet = { + install_info = { + url = "https://github.com/amaanq/tree-sitter-puppet", + files = { "src/parser.c" }, + }, + maintainers = { "@amaanq" }, +} + list.python = { install_info = { url = "https://github.com/tree-sitter/tree-sitter-python", 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) |
