emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 d25f24fe57b 1/3: Fix c-ts-common-statement-offset and c-ts-comm


From: Yuan Fu
Subject: emacs-29 d25f24fe57b 1/3: Fix c-ts-common-statement-offset and c-ts-common--node-is
Date: Fri, 24 Feb 2023 22:52:30 -0500 (EST)

branch: emacs-29
commit d25f24fe57b0bf4d9847ba491ec23c08d44e9d46
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>

    Fix c-ts-common-statement-offset and c-ts-common--node-is
    
    * lisp/progmodes/c-ts-common.el:
    (c-ts-common--node-is): Guard against case where the node has no field
    name.
    (c-ts-common-statement-offset): Do indent a level if the "if" in the
    "else if" is on an independent line.
---
 lisp/progmodes/c-ts-common.el | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/c-ts-common.el b/lisp/progmodes/c-ts-common.el
index 72df65a2287..de0ec0d2876 100644
--- a/lisp/progmodes/c-ts-common.el
+++ b/lisp/progmodes/c-ts-common.el
@@ -305,6 +305,7 @@ If NODE is nil, return nil."
                        (and parent
                             (string-match-p (car regexp)
                                             (treesit-node-type parent))
+                            (treesit-node-field-name node)
                             (string-match-p (cdr regexp)
                                             (treesit-node-field-name
                                              node)))
@@ -363,7 +364,13 @@ characters on the current line."
           (cl-incf level))
         ;; Flatten "else if" statements.
         (when (and (c-ts-common--node-is node 'else)
-                   (c-ts-common--node-is node 'if))
+                   (c-ts-common--node-is node 'if)
+                   ;; But if the "if" is on it's own line, still
+                   ;; indent a level.
+                   (not (save-excursion
+                          (goto-char (treesit-node-start node))
+                          (looking-back (rx bol (* whitespace))
+                                        (line-beginning-position)))))
           (cl-decf level)))
       ;; Go up the tree.
       (setq node (treesit-node-parent node)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]