From: Juri Linkov Date: Sun, 20 Apr 2025 17:39:41 +0000 (+0300) Subject: Fix indentation test failure for elixir-ts--indent-rules X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fab86e07c6acbacbe90b168bf4ba1c9fbec450f2;p=emacs.git Fix indentation test failure for elixir-ts--indent-rules * 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) --- diff --git a/lisp/progmodes/elixir-ts-mode.el b/lisp/progmodes/elixir-ts-mode.el index 3a136894454..f7d6932c7c2 100644 --- a/lisp/progmodes/elixir-ts-mode.el +++ b/lisp/progmodes/elixir-ts-mode.el @@ -244,7 +244,21 @@ (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 _) diff --git a/lisp/progmodes/heex-ts-mode.el b/lisp/progmodes/heex-ts-mode.el index a5fc6e2e232..2d6dce784bc 100644 --- a/lisp/progmodes/heex-ts-mode.el +++ b/lisp/progmodes/heex-ts-mode.el @@ -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)))))