]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix indentation test failure for elixir-ts--indent-rules
authorJuri Linkov <juri@linkov.net>
Sun, 20 Apr 2025 17:39:41 +0000 (20:39 +0300)
committerEshel Yaron <me@eshelyaron.com>
Mon, 21 Apr 2025 20:42:09 +0000 (22:42 +0200)
* lisp/progmodes/elixir-ts-mode.el (elixir-ts--indent-rules):
Add query for Elixir embedded in Heex (bug#76788).

* lisp/progmodes/heex-ts-mode.el (heex-ts-mode): Append
treesit-simple-indent-rules to elixir-ts--indent-rules.

(cherry picked from commit 25854625332b0f751e0cea3e4d598023cbfc2781)

lisp/progmodes/elixir-ts-mode.el
lisp/progmodes/heex-ts-mode.el

index 3a136894454515bdc8f28c86dea6adc38c3f023d..f7d6932c7c21eda14b44deaf728fac00cf0e58c8 100644 (file)
 (defvar elixir-ts--indent-rules
   (let ((offset elixir-ts-indent-offset))
     `((elixir
-       ((parent-is "^source$") column-0 0)
+       ((parent-is "^source$")
+        ,(lambda (_node _parent bol &rest _)
+           ;; If Elixir is embedded indent to parent
+           ;; otherwise indent to the bol.
+           (if (treesit-local-parsers-at (point))
+               (save-excursion
+                 (goto-char (treesit-node-start
+                             (treesit-node-at bol 'heex)))
+                 (back-to-indentation)
+                 (point))
+             (pos-bol)))
+        ,(lambda (_node _parent _bol &rest _)
+           (if (treesit-local-parsers-at (point))
+               elixir-ts-indent-offset
+             0)))
        ((parent-is "^string$") parent-bol 0)
        ((parent-is "^quoted_content$")
         (lambda (_n parent bol &rest _)
index a5fc6e2e232aca120b72ed67aa5434aa8184d06c..2d6dce784bc58c23ec0ba675f548dbf0013b946d 100644 (file)
@@ -188,6 +188,7 @@ Return nil if NODE is not a defun node or doesn't have a name."
 
 (defvar elixir-ts--font-lock-settings)
 (defvar elixir-ts--font-lock-feature-list)
+(defvar elixir-ts--indent-rules)
 (defvar elixir-ts--thing-settings)
 
 ;;;###autoload
@@ -244,6 +245,10 @@ Return nil if NODE is not a defun node or doesn't have a name."
                    treesit-font-lock-feature-list
                    elixir-ts--font-lock-feature-list))
 
+      (setq-local treesit-simple-indent-rules
+                  (append treesit-simple-indent-rules
+                          elixir-ts--indent-rules))
+
       (setq-local treesit-thing-settings
                   (append treesit-thing-settings
                           `((elixir ,@elixir-ts--thing-settings)))))