diff options
| author | Amaan Qureshi <amaanq12@gmail.com> | 2023-02-20 08:10:43 -0500 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2023-02-22 14:11:22 +0100 |
| commit | 8c4a22fd503b963e3f1c40a4d298ee6733fdb28f (patch) | |
| tree | 3418183da48bf2469fcd4f1dcb9725b9cc015237 | |
| parent | highlights(sql): update highlight queries (diff) | |
| download | nvim-treesitter-8c4a22fd503b963e3f1c40a4d298ee6733fdb28f.tar nvim-treesitter-8c4a22fd503b963e3f1c40a4d298ee6733fdb28f.tar.gz nvim-treesitter-8c4a22fd503b963e3f1c40a4d298ee6733fdb28f.tar.bz2 nvim-treesitter-8c4a22fd503b963e3f1c40a4d298ee6733fdb28f.tar.lz nvim-treesitter-8c4a22fd503b963e3f1c40a4d298ee6733fdb28f.tar.xz nvim-treesitter-8c4a22fd503b963e3f1c40a4d298ee6733fdb28f.tar.zst nvim-treesitter-8c4a22fd503b963e3f1c40a4d298ee6733fdb28f.zip | |
feat(smali): improve queries
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | lockfile.json | 2 | ||||
| -rw-r--r-- | lua/nvim-treesitter/parsers.lua | 3 | ||||
| -rw-r--r-- | queries/smali/folds.scm | 12 | ||||
| -rw-r--r-- | queries/smali/highlights.scm | 133 | ||||
| -rw-r--r-- | queries/smali/indents.scm | 32 | ||||
| -rw-r--r-- | queries/smali/locals.scm | 43 |
7 files changed, 191 insertions, 36 deletions
@@ -299,7 +299,7 @@ We are looking for maintainers to add more parsers and to write query files for - [x] [scheme](https://github.com/6cdh/tree-sitter-scheme) (maintained by @6cdh) - [x] [scss](https://github.com/serenadeai/tree-sitter-scss) (maintained by @elianiva) - [x] [slint](https://github.com/jrmoulton/tree-sitter-slint) (experimental, maintained by @jrmoulton) -- [x] [smali](https://github.com/amaanq/tree-sitter-smali) (experimental, maintained by @amaanq) +- [x] [smali](https://github.com/amaanq/tree-sitter-smali) (maintained by @amaanq) - [x] [smithy](https://github.com/indoorvivants/tree-sitter-smithy) (maintained by @amaanq, @keynmol) - [x] [solidity](https://github.com/YongJieYongJie/tree-sitter-solidity) (maintained by @YongJieYongJie) - [x] [sparql](https://github.com/BonaBeavis/tree-sitter-sparql) (maintained by @BonaBeavis) diff --git a/lockfile.json b/lockfile.json index c8ff0ecd6..36ac8c53e 100644 --- a/lockfile.json +++ b/lockfile.json @@ -378,7 +378,7 @@ "revision": "07547525cdf4627343dca5891f1743ae45e879bb" }, "smali": { - "revision": "d7f535e176c928d33b0e202dd808ac247cacf2ff" + "revision": "5a742af7388864a3ff2ce8421328a33e7246a2d5" }, "smithy": { "revision": "cf8c7eb9faf7c7049839585eac19c94af231e6a0" diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 79f0c781e..cfdd584a0 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -1193,11 +1193,10 @@ list.slint = { list.smali = { install_info = { - url = "https://github.com/amaanq/tree-sitter-smali", + url = "https://git.sr.ht/~yotam/tree-sitter-smali", files = { "src/parser.c" }, }, maintainers = { "@amaanq" }, - experimental = true, } list.smithy = { diff --git a/queries/smali/folds.scm b/queries/smali/folds.scm new file mode 100644 index 000000000..c2062e5ef --- /dev/null +++ b/queries/smali/folds.scm @@ -0,0 +1,12 @@ +[ + (annotation_directive) + (array_data_directive) + (field_definition) + (method_definition) + (packed_switch_directive) + (param_directive) + (parameter_directive) + (sparse_switch_directive) + (subannotation_directive) + (list) +] @fold diff --git a/queries/smali/highlights.scm b/queries/smali/highlights.scm index 82dd7d758..5f89cfa74 100644 --- a/queries/smali/highlights.scm +++ b/queries/smali/highlights.scm @@ -4,52 +4,97 @@ (primitive_type) @type.builtin -(array_type - "[" @punctuation.bracket) +((class_identifier) @type.builtin + (#vim-match? @type.builtin "^L(android|com/android|dalvik|java)/")) ; Methods -(method_declaration - (method_identifier) @method) +(method_definition + (method_signature (method_identifier) @method)) -(statement +(expression (opcode) @_invoke - (full_method_identifier - (method_identifier) @method.call) + (value + (body + (full_method_signature + (method_signature (method_identifier) @method.call)))) (#lua-match? @_invoke "^invoke")) -(method_identifier - "<init>(" @constructor - ")" @constructor) +(method_handle + (full_method_signature + (method_signature (method_identifier) @method.call))) + +(call_site) @method.call + +(custom_invoke + (method_signature (method_identifier) @method.call)) + +(annotation_value + (body + (method_signature (method_identifier) @method.call))) + +(annotation_value + (body + (full_method_signature + (method_signature (method_identifier) @method.call)))) + +(field_definition + (value + (body + (method_signature (method_identifier) @method.call)))) -(method_identifier - "<clinit>(" @constructor - ")" @constructor) +(field_definition + (value + (body + (full_method_signature + (method_signature (method_identifier) @method.call))))) + +((method_signature + (method_identifier) @constructor) + (#any-of? @constructor "<init>" "<clinit>")) ; Fields (field_identifier) @field -; Parameters - -(parameter) @parameter +(annotation_key) @field ; Variables -(variable) @variable +(variable) @variable.builtin + +(local_directive + (identifier) @variable) + +; Parameters + +(parameter) @parameter.builtin +(param_identifier) @parameter ; Labels -(label) @label +[ + (label) + (jmp_label) +] @label ; Operators (opcode) @keyword.operator ((opcode) @keyword.return - (#lua-match? @keyword.return "^return")) + (#lua-match? @keyword.return "^return")) + +((opcode) @conditional + (#vim-match? @conditional "^(if|cmp)")) -"=" @operator +((opcode) @exception + (#lua-match? @exception "^throw")) + +[ + "=" + ".." +] @operator ; Keywords @@ -59,11 +104,20 @@ ".source" ".implements" ".field" + ".end field" ".annotation" + ".end annotation" ".subannotation" + ".end subannotation" ".param" + ".end param" + ".parameter" + ".end parameter" ".line" ".locals" + ".local" + ".end local" + ".restart local" ".registers" ".catch" ".catchall" @@ -77,38 +131,53 @@ ] @keyword [ - (end_field) - (end_annotation) - (end_subannotation) - (end_param) + (prologue_directive) + (epilogue_directive) ] @keyword [ ".method" - (end_method) + ".end method" ] @keyword.function ; Literals -(string_literal) @string +(string) @string +(escape_sequence) @string.escape -(number_literal) @number +(character) @character -(boolean_literal) @boolean +(number) @number -(character_literal) @character +[ + (float) + (NaN) + (Infinity) +] @float -(null_literal) @constant.builtin +(boolean) @boolean + +(null) @constant.builtin ; Misc -(annotation_visibility) @attribute +(annotation_visibility) @storageclass (access_modifiers) @type.qualifier +(array_type + "[" @punctuation.special) + ["{" "}"] @punctuation.bracket -"->" @punctuation.delimiter +["(" ")"] @punctuation.bracket + +[ + "->" + ":" + "," + "@" +] @punctuation.delimiter ; Comments diff --git a/queries/smali/indents.scm b/queries/smali/indents.scm new file mode 100644 index 000000000..871362cbd --- /dev/null +++ b/queries/smali/indents.scm @@ -0,0 +1,32 @@ +[ + (annotation_directive) + (array_data_directive) + (field_definition) + (method_definition) + (packed_switch_directive) + (param_directive) + (parameter_directive) + (sparse_switch_directive) + (subannotation_directive) + (list) +] @indent + +[ + ".end annotation" + ".end array-data" + ".end field" + ".end method" + ".end packed-switch" + ".end param" + ".end parameter" + ".end sparse-switch" + ".end subannotation" + "}" +] @indent_end + +[ "{" "}" ] @branch + +[ + (ERROR) + (comment) +] @auto diff --git a/queries/smali/locals.scm b/queries/smali/locals.scm new file mode 100644 index 000000000..a91fec225 --- /dev/null +++ b/queries/smali/locals.scm @@ -0,0 +1,43 @@ +[ + (class_directive) + (expression) + (annotation_directive) + (array_data_directive) + (method_definition) + (packed_switch_directive) + (sparse_switch_directive) + (subannotation_directive) +] @scope + +[ + (identifier) + (class_identifier) + (call_site) + (label) + (jmp_label) +] @reference + +(enum_reference + (field_identifier) @definition.enum) + +((field_definition + modifiers: (access_modifiers) @_mod + (field_identifier) @definition.enum) + (#eq? @_mod "enum")) + +(field_definition + (field_identifier) @definition.field + (field_type) @definition.associated) + +(annotation_key) @definition.field + +(method_definition + (method_signature (method_identifier) @definition.method)) + +(param_identifier) @definition.parameter + +(annotation_directive + (class_identifier) @definition.type) + +(class_directive + (class_identifier) @definition.type) |
