diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-06-12 09:54:30 -0600 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | 692b051b09935653befdb8f7ba8afdb640adf17b (patch) | |
| tree | 167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/smali | |
| parent | feat(c-family): inherit injections (diff) | |
| download | nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2 nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip | |
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/smali')
| -rw-r--r-- | runtime/queries/smali/folds.scm | 12 | ||||
| -rw-r--r-- | runtime/queries/smali/highlights.scm | 226 | ||||
| -rw-r--r-- | runtime/queries/smali/indents.scm | 35 | ||||
| -rw-r--r-- | runtime/queries/smali/injections.scm | 2 | ||||
| -rw-r--r-- | runtime/queries/smali/locals.scm | 43 |
5 files changed, 318 insertions, 0 deletions
diff --git a/runtime/queries/smali/folds.scm b/runtime/queries/smali/folds.scm new file mode 100644 index 000000000..c2062e5ef --- /dev/null +++ b/runtime/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/runtime/queries/smali/highlights.scm b/runtime/queries/smali/highlights.scm new file mode 100644 index 000000000..161b732b2 --- /dev/null +++ b/runtime/queries/smali/highlights.scm @@ -0,0 +1,226 @@ +; Types +(class_identifier + (identifier) @type) + +(primitive_type) @type.builtin + +((class_identifier + . + (identifier) @_first @type.builtin + (identifier) @type.builtin) + (#any-of? @_first "android" "dalvik" "java" "kotlinx")) + +((class_identifier + . + (identifier) @_first @type.builtin + . + (identifier) @_second @type.builtin + (identifier) @type.builtin) + (#eq? @_first "com") + (#any-of? @_second "android" "google")) + +; Methods +(method_definition + (method_signature + (method_identifier) @function.method)) + +(expression + (opcode) @_invoke + (body + (full_method_signature + (method_signature + (method_identifier) @function.method.call))) + (#lua-match? @_invoke "^invoke")) + +(method_handle + (full_method_signature + (method_signature + (method_identifier) @function.method.call))) + +(custom_invoke + . + (identifier) @function.method.call + (method_signature + (method_identifier) @function.method.call)) + +(annotation_value + (body + (method_signature + (method_identifier) @function.method.call))) + +(annotation_value + (body + (full_method_signature + (method_signature + (method_identifier) @function.method.call)))) + +(field_definition + (body + (method_signature + (method_identifier) @function.method.call))) + +(field_definition + (body + (full_method_signature + (method_signature + (method_identifier) @function.method.call)))) + +((method_identifier) @constructor + (#any-of? @constructor "<init>" "<clinit>")) + +"constructor" @constructor + +; Fields +(field_identifier) @variable.member + +(annotation_key) @variable.member + +((field_identifier) @constant + (#lua-match? @constant "^[%u_]*$")) + +; Variables +(variable) @variable.builtin + +(local_directive + (identifier) @variable) + +; Parameters +(parameter) @variable.parameter.builtin + +(param_identifier) @variable.parameter + +; Labels +[ + (label) + (jmp_label) +] @label + +; Operators +(opcode) @keyword.operator + +((opcode) @keyword.return + (#lua-match? @keyword.return "^return")) + +((opcode) @keyword.conditional + (#lua-match? @keyword.conditional "^if")) + +((opcode) @keyword.conditional + (#lua-match? @keyword.conditional "^cmp")) + +((opcode) @keyword.exception + (#lua-match? @keyword.exception "^throw")) + +((opcode) @comment + (#eq? @comment "nop")) ; haha, anyone get it? ;) + +[ + "=" + ".." +] @operator + +; Keywords +[ + ".class" + ".super" + ".implements" + ".field" + ".end field" + ".annotation" + ".end annotation" + ".subannotation" + ".end subannotation" + ".param" + ".end param" + ".parameter" + ".end parameter" + ".line" + ".locals" + ".local" + ".end local" + ".restart local" + ".registers" + ".packed-switch" + ".end packed-switch" + ".sparse-switch" + ".end sparse-switch" + ".array-data" + ".end array-data" + ".enum" + (prologue_directive) + (epilogue_directive) +] @keyword + +".source" @keyword.import + +[ + ".method" + ".end method" +] @keyword.function + +[ + ".catch" + ".catchall" +] @keyword.exception + +; Literals +(string) @string + +(source_directive + (string + "\"" + _ @string.special.url + "\"")) + +(escape_sequence) @string.escape + +(character) @character + +"L" @character.special + +(number) @number + +[ + (float) + (NaN) + (Infinity) +] @number.float + +(boolean) @boolean + +(null) @constant.builtin + +; Misc +(annotation_visibility) @keyword.modifier + +(access_modifier) @keyword.modifier + +(array_type + "[" @punctuation.special) + +[ + "{" + "}" +] @punctuation.bracket + +[ + "(" + ")" +] @punctuation.bracket + +[ + "->" + "," + ":" + ";" + "@" + "/" +] @punctuation.delimiter + +(line_directive + (number) @string.special) + +; Comments +(comment) @comment @spell + +(class_definition + (comment) @comment.documentation) diff --git a/runtime/queries/smali/indents.scm b/runtime/queries/smali/indents.scm new file mode 100644 index 000000000..b4f37ddb4 --- /dev/null +++ b/runtime/queries/smali/indents.scm @@ -0,0 +1,35 @@ +[ + (annotation_directive) + (array_data_directive) + (field_definition) + (method_definition) + (packed_switch_directive) + (param_directive) + (parameter_directive) + (sparse_switch_directive) + (subannotation_directive) + (list) +] @indent.begin + +[ + ".end annotation" + ".end array-data" + ".end field" + ".end method" + ".end packed-switch" + ".end param" + ".end parameter" + ".end sparse-switch" + ".end subannotation" + "}" +] @indent.end @indent.branch + +[ + "{" + "}" +] @indent.branch + +[ + (ERROR) + (comment) +] @indent.auto diff --git a/runtime/queries/smali/injections.scm b/runtime/queries/smali/injections.scm new file mode 100644 index 000000000..2f0e58eb6 --- /dev/null +++ b/runtime/queries/smali/injections.scm @@ -0,0 +1,2 @@ +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/runtime/queries/smali/locals.scm b/runtime/queries/smali/locals.scm new file mode 100644 index 000000000..a34b799ba --- /dev/null +++ b/runtime/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) +] @local.scope + +[ + (identifier) + (class_identifier) + (label) + (jmp_label) +] @local.reference + +(enum_reference + (field_identifier) @local.definition.enum) + +((field_definition + (access_modifiers) @_mod + (field_identifier) @local.definition.enum) + (#eq? @_mod "enum")) + +(field_definition + (field_identifier) @local.definition.field + (field_type) @local.definition.associated) + +(annotation_key) @local.definition.field + +(method_definition + (method_signature + (method_identifier) @local.definition.method)) + +(param_identifier) @local.definition.parameter + +(annotation_directive + (class_identifier) @local.definition.type) + +(class_directive + (class_identifier) @local.definition.type) |
