diff options
| author | Mateus Melchiades <mateusbmelchiades@gmail.com> | 2022-01-28 19:13:39 -0300 |
|---|---|---|
| committer | Stephan Seitz <stephan.seitz@fau.de> | 2022-01-29 18:43:44 +0100 |
| commit | 5fc4cb5d2de9785cc065af1aba16b459b910fbcb (patch) | |
| tree | a03914e42c8a43603b8449cad5c8173f102cffa1 | |
| parent | indents(r): add pipe test (diff) | |
| download | nvim-treesitter-5fc4cb5d2de9785cc065af1aba16b459b910fbcb.tar nvim-treesitter-5fc4cb5d2de9785cc065af1aba16b459b910fbcb.tar.gz nvim-treesitter-5fc4cb5d2de9785cc065af1aba16b459b910fbcb.tar.bz2 nvim-treesitter-5fc4cb5d2de9785cc065af1aba16b459b910fbcb.tar.lz nvim-treesitter-5fc4cb5d2de9785cc065af1aba16b459b910fbcb.tar.xz nvim-treesitter-5fc4cb5d2de9785cc065af1aba16b459b910fbcb.tar.zst nvim-treesitter-5fc4cb5d2de9785cc065af1aba16b459b910fbcb.zip | |
Vala language support
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | ftdetect/vala.vim | 1 | ||||
| -rw-r--r-- | lua/nvim-treesitter/parsers.lua | 9 | ||||
| -rw-r--r-- | queries/vala/highlights.scm | 387 |
4 files changed, 398 insertions, 0 deletions
@@ -249,6 +249,7 @@ We are looking for maintainers to add more parsers and to write query files for - [x] [typescript](https://github.com/tree-sitter/tree-sitter-typescript) (maintained by @steelsojka) - [x] [verilog](https://github.com/tree-sitter/tree-sitter-verilog) (experimental, maintained by @zegervdv) - [x] [vim](https://github.com/vigoux/tree-sitter-viml) (maintained by @vigoux) +- [x] [vala](https://github.com/matbme/tree-sitter-vala) (maintained by @matbme) - [x] [vue](https://github.com/ikatyang/tree-sitter-vue) (maintained by @WhyNotHugo) - [x] [yaml](https://github.com/ikatyang/tree-sitter-yaml) (maintained by @stsewd) - [x] [yang](https://github.com/Hubro/tree-sitter-yang) (maintained by @Hubro) diff --git a/ftdetect/vala.vim b/ftdetect/vala.vim new file mode 100644 index 000000000..c3a28e048 --- /dev/null +++ b/ftdetect/vala.vim @@ -0,0 +1 @@ +au BufRead,BufNewFile *.vala set filetype=vala diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index a2d030c27..e5c36ad08 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -912,6 +912,15 @@ list.norg = { maintainers = { "@JoeyGrajciar", "@vhyrro", "@mrossinek" }, } +list.vala = { + install_info = { + url = "https://github.com/matbme/tree-sitter-vala", + branch = "main", + files = { "src/parser.c" }, + }, + maintainers = { "@matbme" }, +} + local M = { list = list, } diff --git a/queries/vala/highlights.scm b/queries/vala/highlights.scm new file mode 100644 index 000000000..36c059566 --- /dev/null +++ b/queries/vala/highlights.scm @@ -0,0 +1,387 @@ +; Pointers + +(address_of_identifier + "&" @symbol + (_)* +) + +(pointer_type + (_)* + "*" @symbol +) + +(indirection_identifier + "*" @symbol + (_)* +) + +"delete" @keyword + +; Misc + +(number) @number + +[ + "{" + "}" + "(" + ")" +] @punctuation.bracket + +[ +";" +"." +"," +"->" +] @punctuation.delimiter + +; Keywords + +"return" @keyword.return +"yield" @keyword.return +"break" @keyword.return + +; Booleans + +(true) @boolean +(false) @boolean + +; Operators + +(binary_expression + (_) + [ + "*" + "/" + "+" + "-" + "%" + "<" + "<=" + ">" + ">=" + "==" + "!=" + "+=" + "-=" + "*=" + "/=" + "%=" + "&&" + "||" + "&" + "|" + "^" + "~" + "|=" + "&=" + "^=" + "??" + ] @operator + (_) +) + +(unary_expression + (_)? + [ + "-" + "!" + "--" + "++" + ] @operator + (_)? +) + +(null) @keyword + +; Methods + +(function_definition + (modifier)* @keyword + type: (_) @type + name: [ + (identifier) @method + (camel_cased_identifier) @type + (generic_identifier (_) @type) + (namespaced_identifier + left: (_) + right: (_) @method . + ) + ] +) + +(function_call + identifier: [ + (identifier) @method + (camel_cased_identifier) @type + (generic_identifier (_) @type) + (namespaced_identifier + left: (_) + right: (_) @method . + ) + ] + (parameter_list) +) + +; Modifiers + +(modifier) @keyword +"var" @keyword + +; Types + +(primitive_type) @type + +(nullable_type + (_) @type + "?" @symbol +) + +"typeof" @keyword + +"is" @keyword + +(is_type_expression + (_) + "is" @keyword + (_) @type +) + +; Comments + +(comment) @comment + +; Namespace + +(namespace + "namespace" @include + (camel_cased_identifier) @namespace +) + +"global" @namespace + +"using" @include + +; declaration +(declaration + (_)* + [ + (camel_cased_identifier) @type + (_) + ] + (_)* +) + +; Classes + +(class_declaration + (modifier) @keyword + "class" @keyword + [ + (camel_cased_identifier) @type + (generic_identifier (_) @type ) + ] +) + +(class_constructor_definition + (modifier)* @keyword + [ + (identifier) + (namespaced_identifier) + (camel_cased_identifier) + ] @constructor + (_)* +) + +(class_destructor + "~" @symbol + (_) @constructor + (_)* +) + +; Interfaces + +(interface_declaration + (modifier) @keyword + "interface" @keyword + [ + (camel_cased_identifier) @type + (generic_identifier (_) @type ) + ] +) + +; Class properties + +(property_parameter) @keyword +(this) @keyword + +; Strings and escape sequences + +(string_literal) @string +(escape_sequence) @string.escape + +(string_template + "@" @symbol +) @string + +(string_template_variable) @variable + +(string_template_expression) @variable + +; Assignment and declaration + +(new_instance + [ + ( + "new" @keyword + (_)* + ) + ( + (_)* + ".new" @keyword + ) + ] +) + +; Parameters + +(instanciation_parameter + (modifier) @keyword +) + +; GObject construct + +"construct" @constructor + +; Conditionals + +[ +"if" +"else" +"switch" +"case" +"default" +] @conditional + +; Try statement + +(try_statement + "try" @keyword + (block) + "catch" @keyword + exception: (parameter_list (declaration_parameter + (_) @exception + (_) @variable + )) + (block) +) + +; Enum + +"enum" @keyword +(enum_declaration + (camel_cased_identifier) @type + (_)* +) + +; Loop + +[ +"for" +"foreach" +"in" +"while" +"do" +] @repeat + +(foreach_statement + (_)* + loop_item: (identifier) @variable + (_)* +) + +; Generics + +(generic_identifier + (camel_cased_identifier) @type +) + +; Closure + +(closure + "(" + (identifier)* @variable + ")" + (_)* +) + +; Casting + +(static_cast + (_) @type +) + +(dynamic_cast + (_) + "as" @keyword + (_) @type +) + +; Throw error + +"throws" @keyword +"throw" @exception + +; Ownership + +(ownership_transfer + "owned" @keyword + (_) +) + +; Regex + +(regex_literal) @string.regex + +; Contract programming + +"requires" @keyword +"ensures" @keyword + +; Code attribute + +(code_attribute + "[" @attribute + name: (camel_cased_identifier) @attribute + ( + "(" @attribute + (_)+ + ")" @attribute + )? + "]" @attribute +) + +; Constant +(uppercased_identifier) @constant + +; Other + +(namespaced_identifier + left: [ + (camel_cased_identifier) @namespace + (identifier) @variable + ] + ( + "." + right: [ + (identifier) @parameter + (camel_cased_identifier) @type + (uppercased_identifier) @constant + ] + )+ +) + +; Variable + +(identifier) @variable +(camel_cased_identifier) @variable |
