diff --git a/README.md b/README.md index 8fde2bb2f..eff43e4d6 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,7 @@ We are looking for maintainers to add more parsers and to write query files for - [x] [cpp](https://github.com/tree-sitter/tree-sitter-cpp) (maintained by @theHamsta) - [x] [css](https://github.com/tree-sitter/tree-sitter-css) (maintained by @TravonteD) - [x] [dart](https://github.com/UserNobody14/tree-sitter-dart) (maintained by @Akin909) +- [x] [devicetree](https://github.com/joelspadin/tree-sitter-devicetree) (maintained by @jedrzejboczar) - [ ] [elm](https://github.com/elm-tooling/tree-sitter-elm) - [x] [erlang](https://github.com/AbstractMachinesLab/tree-sitter-erlang) (maintained by @ostera) - [x] [fennel](https://github.com/travonted/tree-sitter-fennel) (maintained by @TravonteD) diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 7be10c84d..547556cda 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -416,6 +416,16 @@ list.turtle = { maintainers = { "@bonabeavis" }, } +list.devicetree = { + install_info = { + url = "https://github.com/joelspadin/tree-sitter-devicetree", + files = { "src/parser.c" }, + branch = "main", + }, + filetype = 'dts', + maintainers = { "@jedrzejboczar" }, +} + local M = { list = list } diff --git a/queries/devicetree/folds.scm b/queries/devicetree/folds.scm new file mode 100644 index 000000000..206c4bed8 --- /dev/null +++ b/queries/devicetree/folds.scm @@ -0,0 +1 @@ +(node) @fold diff --git a/queries/devicetree/highlights.scm b/queries/devicetree/highlights.scm new file mode 100644 index 000000000..e3140a5da --- /dev/null +++ b/queries/devicetree/highlights.scm @@ -0,0 +1,35 @@ +(comment) @comment + +[ + (preproc_include) + (dtsi_include) +] @include + +(preproc_def) @constant.macro +(preproc_function_def) @function.macro + +[ + (memory_reservation) + (file_version) +] @attribute + +[ + (string_literal) + (byte_string_literal) + (system_lib_string) +] @string + +(integer_literal) @number + +(identifier) @variable +(node (identifier) @namespace) +(property (identifier) @property) +(labeled_item (identifier) @label) +(call_expression (identifier) @function.macro) + +(reference) @label ; referencing labeled_item.identifier +(unit_address) @constant + +[ "=" ] @operator +[ "(" ")" "[" "]" "{" "}" "<" ">" ] @punctuation.bracket +[ ";" ":" "," "@" ] @punctuation.delimiter diff --git a/queries/devicetree/indents.scm b/queries/devicetree/indents.scm new file mode 100644 index 000000000..cd7c8fcd6 --- /dev/null +++ b/queries/devicetree/indents.scm @@ -0,0 +1,14 @@ +[ + (node) + (property) + (integer_cells) +] @indent + +[ + "}" + ">" +] @branch + +[ + (comment) +] @ignore diff --git a/queries/devicetree/locals.scm b/queries/devicetree/locals.scm new file mode 100644 index 000000000..95b124bd1 --- /dev/null +++ b/queries/devicetree/locals.scm @@ -0,0 +1,4 @@ +[ + (node) + (integer_cells) +]@scope