aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/src/generated/lang-support.md2
-rw-r--r--languages.toml2
-rw-r--r--runtime/queries/java/indents.scm35
3 files changed, 37 insertions, 2 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 22689c9c..cb3a6f55 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -69,7 +69,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 967bbea7..d35b835e 100644
--- a/languages.toml
+++ b/languages.toml
@@ -833,7 +833,7 @@ injection-regex = "java"
file-types = ["java"]
roots = ["pom.xml", "build.gradle", "build.gradle.kts"]
language-servers = [ "jdtls" ]
-indent = { tab-width = 4, unit = " " }
+indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "java"
diff --git a/runtime/queries/java/indents.scm b/runtime/queries/java/indents.scm
new file mode 100644
index 00000000..76e21861
--- /dev/null
+++ b/runtime/queries/java/indents.scm
@@ -0,0 +1,35 @@
+[
+ (class_body)
+ (enum_body)
+ (interface_body)
+ (constructor_body)
+ (annotation_type_body)
+ (module_body)
+ (block)
+ (switch_block)
+ (array_initializer)
+ (argument_list)
+ (formal_parameters)
+ (annotation_argument_list)
+ (element_value_array_initializer)
+] @indent
+
+[
+ "}"
+ ")"
+ "]"
+] @outdent
+
+; Single statement after if/while/for without brackets
+(if_statement
+ consequence: (_) @indent
+ (#not-kind-eq? @indent "block")
+ (#set! "scope" "all"))
+(while_statement
+ body: (_) @indent
+ (#not-kind-eq? @indent "block")
+ (#set! "scope" "all"))
+(for_statement
+ (_) @indent
+ (#not-kind-eq? @indent "block")
+ (#set! "scope" "all"))