]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve list indentation for elixir-ts-mode
authorWilhelm H Kirschbaum <wkirschbaum@gmail.com>
Sun, 2 Apr 2023 09:26:02 +0000 (11:26 +0200)
committerYuan Fu <casouri@gmail.com>
Wed, 5 Apr 2023 06:01:21 +0000 (23:01 -0700)
* lisp/progmodes/elixir-ts-mode.el:
(elixir-ts--argument-indent-offset): Add empty line check.
(elixir-ts--argument-indent-anchor): Change ERROR offset.
* test/lisp/progmodes/elixir-ts-mode-resources/indent.erts:
Add test.

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

index 286f3e39f43edf159161272f58a3cf1499973a63..e0335fe15ed4f8d9e85c60a790e526b851bff44d 100644 (file)
 
 (defun elixir-ts--argument-indent-offset (node _parent &rest _)
   "Return the argument offset position for NODE."
-  (if (treesit-node-prev-sibling node t) 0 elixir-ts-indent-offset))
+  (if (or (treesit-node-prev-sibling node t)
+          ;; Don't indent if this is the first node or
+          ;; if the line is empty.
+          (save-excursion
+            (beginning-of-line)
+            (looking-at-p "[[:blank:]]*$")))
+      0 elixir-ts-indent-offset))
 
 (defun elixir-ts--argument-indent-anchor (node parent &rest _)
   "Return the argument anchor position for NODE and PARENT."
        ;; Handle incomplete maps when parent is ERROR.
        ((n-p-gp "^binary_operator$" "ERROR" nil) parent-bol 0)
        ;; When there is an ERROR, just indent to prev-line.
-       ((parent-is "ERROR") prev-line 0)
+       ((parent-is "ERROR") prev-line ,offset)
        ((node-is "^binary_operator$")
         (lambda (node parent &rest _)
           (let ((top-level
index ea5d9e62240cfd96c3aa71f97e15fc95b9d267f1..9ad604e5198c8308c0b387ba27fd727de38733bc 100644 (file)
@@ -1,6 +1,5 @@
 Code:
   (lambda ()
-    (setq indent-tabs-mode nil)
     (elixir-ts-mode)
     (indent-region (point-min) (point-max)))
 
@@ -330,3 +329,22 @@ defmodule Foo do
   end
 end
 =-=-=
+
+Code:
+  (lambda ()
+    (elixir-ts-mode)
+    (newline)
+    (indent-for-tab-command))
+
+Name: New list item
+
+=-=
+[
+  :foo,$
+]
+=-=
+[
+  :foo,
+  $
+]
+=-=-=