diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index 22689c9c6..cb3a6f55d 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 967bbea72..d35b835e3 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 000000000..76e218619 --- /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"))