aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennard Hofmann2022-11-26 16:17:10 +0000
committerGitHub2022-11-26 16:17:10 +0000
commitfc811726e0e74dd6597f1ebbbd095901b8a78a3e (patch)
tree8b556487ee8afef327226b73385eb783b3c09467
parent8529d756fad2eeea543b487e1ff5253857bc2e16 (diff)
Update tree-sitter-java and add Java textobjects (#4886)
-rw-r--r--book/src/generated/lang-support.md2
-rw-r--r--languages.toml2
-rw-r--r--runtime/queries/java/highlights.scm19
-rw-r--r--runtime/queries/java/injections.scm2
-rw-r--r--runtime/queries/java/textobjects.scm35
5 files changed, 55 insertions, 5 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index ac955036..487057e6 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -56,7 +56,7 @@
| idris | | | | `idris2-lsp` |
| iex | ✓ | | | |
| ini | ✓ | | | |
-| java | ✓ | | | `jdtls` |
+| java | ✓ | ✓ | | `jdtls` |
| javascript | ✓ | ✓ | ✓ | `typescript-language-server` |
| jsdoc | ✓ | | | |
| json | ✓ | | ✓ | `vscode-json-language-server` |
diff --git a/languages.toml b/languages.toml
index 8c3f19e4..d616ce9e 100644
--- a/languages.toml
+++ b/languages.toml
@@ -617,7 +617,7 @@ indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "java"
-source = { git = "https://github.com/tree-sitter/tree-sitter-java", rev = "bd6186c24d5eb13b4623efac9d944dcc095c0dad" }
+source = { git = "https://github.com/tree-sitter/tree-sitter-java", rev = "09d650def6cdf7f479f4b78f595e9ef5b58ce31e" }
[[language]]
name = "ledger"
diff --git a/runtime/queries/java/highlights.scm b/runtime/queries/java/highlights.scm
index 77902fce..f049b8d2 100644
--- a/runtime/queries/java/highlights.scm
+++ b/runtime/queries/java/highlights.scm
@@ -21,6 +21,8 @@
name: (identifier) @type)
(class_declaration
name: (identifier) @type)
+(record_declaration
+ name: (identifier) @type)
(enum_declaration
name: (identifier) @type)
@@ -33,6 +35,8 @@
(constructor_declaration
name: (identifier) @type)
+(compact_constructor_declaration
+ name: (identifier) @type)
(type_identifier) @type
@@ -59,6 +63,7 @@
(hex_integer_literal)
(decimal_integer_literal)
(octal_integer_literal)
+ (binary_integer_literal)
] @constant.numeric.integer
[
@@ -67,7 +72,11 @@
] @constant.numeric.float
(character_literal) @constant.character
-(string_literal) @string
+
+[
+ (string_literal)
+ (text_block)
+] @string
[
(true)
@@ -75,7 +84,8 @@
(null_literal)
] @constant.builtin
-(comment) @comment
+(line_comment) @comment
+(block_comment) @comment
; Keywords
@@ -104,15 +114,19 @@
"module"
"native"
"new"
+ "non-sealed"
"open"
"opens"
"package"
+ "permits"
"private"
"protected"
"provides"
"public"
"requires"
+ "record"
"return"
+ "sealed"
"static"
"strictfp"
"switch"
@@ -127,4 +141,5 @@
"volatile"
"while"
"with"
+ "yield"
] @keyword
diff --git a/runtime/queries/java/injections.scm b/runtime/queries/java/injections.scm
index 321c90ad..e4509a5f 100644
--- a/runtime/queries/java/injections.scm
+++ b/runtime/queries/java/injections.scm
@@ -1,2 +1,2 @@
-((comment) @injection.content
+([(line_comment) (block_comment)] @injection.content
(#set! injection.language "comment"))
diff --git a/runtime/queries/java/textobjects.scm b/runtime/queries/java/textobjects.scm
new file mode 100644
index 00000000..a932c793
--- /dev/null
+++ b/runtime/queries/java/textobjects.scm
@@ -0,0 +1,35 @@
+(method_declaration
+ body: (_) @function.inside) @function.around
+
+(interface_declaration
+ body: (_) @class.inside) @class.around
+
+(class_declaration
+ body: (_) @class.inside) @class.around
+
+(record_declaration
+ body: (_) @class.inside) @class.around
+
+(enum_declaration
+ body: (_) @class.inside) @class.around
+
+(formal_parameters
+ ((_) @parameter.inside . ","? @parameter.around) @parameter.around)
+
+(type_parameters
+ ((_) @parameter.inside . ","? @parameter.around) @parameter.around)
+
+(type_arguments
+ ((_) @parameter.inside . ","? @parameter.around) @parameter.around)
+
+(argument_list
+ ((_) @parameter.inside . ","? @parameter.around) @parameter.around)
+
+[
+ (line_comment)
+ (block_comment)
+] @comment.inside
+
+(line_comment)+ @comment.around
+
+(block_comment) @comment.around