aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaan Qureshi <amaanq12@gmail.com>2023-02-20 08:10:43 -0500
committerChristian Clason <c.clason@uni-graz.at>2023-02-22 14:11:22 +0100
commit8c4a22fd503b963e3f1c40a4d298ee6733fdb28f (patch)
tree3418183da48bf2469fcd4f1dcb9725b9cc015237
parenthighlights(sql): update highlight queries (diff)
downloadnvim-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.md2
-rw-r--r--lockfile.json2
-rw-r--r--lua/nvim-treesitter/parsers.lua3
-rw-r--r--queries/smali/folds.scm12
-rw-r--r--queries/smali/highlights.scm133
-rw-r--r--queries/smali/indents.scm32
-rw-r--r--queries/smali/locals.scm43
7 files changed, 191 insertions, 36 deletions
diff --git a/README.md b/README.md
index c7ee98afa..364028178 100644
--- a/README.md
+++ b/README.md
@@ -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)