]> git.eshelyaron.com Git - emacs.git/commitdiff
java-ts-mode: Indentation for opening brace on a separate line
authorDmitry Gutov <dmitry@gutov.dev>
Sat, 17 Feb 2024 20:34:55 +0000 (22:34 +0200)
committerEshel Yaron <me@eshelyaron.com>
Wed, 28 Feb 2024 17:35:04 +0000 (18:35 +0100)
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules):
Support putting the opening brace on a separate line (bug#67556).

* test/lisp/progmodes/java-ts-mode-resources/indent.erts:
Add a test.

(cherry picked from commit 5a64d2c7595dc393504c6eee9321d74dbd8ae9e2)

lisp/progmodes/java-ts-mode.el
test/lisp/progmodes/java-ts-mode-resources/indent.erts

index 0b1ac49b99fb7e90512a999b06402486f6809a85..00d7d0d75a1039fa53cbd21cebec305d74692277 100644 (file)
      ((parent-is "program") column-0 0)
      ((match "}" "element_value_array_initializer")
       parent-bol 0)
-     ((node-is "}") column-0 c-ts-common-statement-offset)
+     ((node-is
+       ,(format "\\`%s\\'"
+                (regexp-opt '("constructor_body" "class_body" "interface_body"
+                              "block" "switch_block" "array_initializer"))))
+      parent-bol 0)
+     ((node-is "}") standalone-parent 0)
      ((node-is ")") parent-bol 0)
      ((node-is "else") parent-bol 0)
      ((node-is "]") parent-bol 0)
      ((parent-is "array_initializer") parent-bol java-ts-mode-indent-offset)
      ((parent-is "annotation_type_body") column-0 c-ts-common-statement-offset)
      ((parent-is "interface_body") column-0 c-ts-common-statement-offset)
-     ((parent-is "constructor_body") column-0 c-ts-common-statement-offset)
+     ((parent-is "constructor_body") standalone-parent java-ts-mode-indent-offset)
      ((parent-is "enum_body_declarations") parent-bol 0)
      ((parent-is "enum_body") column-0 c-ts-common-statement-offset)
-     ((parent-is "switch_block") column-0 c-ts-common-statement-offset)
+     ((parent-is "switch_block") standalone-parent java-ts-mode-indent-offset)
      ((parent-is "record_declaration_body") column-0 c-ts-common-statement-offset)
      ((query "(method_declaration (block _ @indent))") parent-bol java-ts-mode-indent-offset)
      ((query "(method_declaration (block (_) @indent))") parent-bol java-ts-mode-indent-offset)
      ((parent-is "case_statement") parent-bol java-ts-mode-indent-offset)
      ((parent-is "labeled_statement") parent-bol java-ts-mode-indent-offset)
      ((parent-is "do_statement") parent-bol java-ts-mode-indent-offset)
-     ((parent-is "block") column-0 c-ts-common-statement-offset)))
+     ((parent-is "block") standalone-parent java-ts-mode-indent-offset)))
   "Tree-sitter indent rules.")
 
 (defvar java-ts-mode--keywords
index 4fca74dd2e1506c8f201489748b447a1201e28ec..514d2e08977ac543dad1cd6acb2d895a3285f629 100644 (file)
@@ -110,3 +110,34 @@ public class Java {
     }
 }
 =-=-=
+
+Name: Opening bracket on separate line (bug#67556)
+
+=-=
+public class Java {
+    void foo(
+        String foo)
+    {
+        for (var f : rs)
+            return new String[]
+            {
+                "foo",
+                "bar"
+            };
+        if (a == 0)
+        {
+            return 0;
+        } else if (a == 1)
+        {
+            return 1;
+        }
+
+        switch(expr)
+        {
+            case x:
+                // code block
+                break;
+        }
+    }
+}
+=-=-=