emacs-diffs
[Top][All Lists]
Advanced

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

master 8cfa3447b71 1/3: Add special indent rule for FOR_EACH_TAIL in c-t


From: Yuan Fu
Subject: master 8cfa3447b71 1/3: Add special indent rule for FOR_EACH_TAIL in c-ts-mode
Date: Mon, 13 Jan 2025 02:43:25 -0500 (EST)

branch: master
commit 8cfa3447b71a3586378e90e5690da6c1faaa77b6
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>

    Add special indent rule for FOR_EACH_TAIL in c-ts-mode
    
    * lisp/progmodes/c-ts-mode.el:
    (c-ts-mode--emacs-macro-rules): New function
    (c-ts-mode--simple-indent-rules): Add new rule.
---
 lisp/progmodes/c-ts-mode.el | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index 99e624412b2..d0ed110abbb 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -445,6 +445,18 @@ NODE and PARENT are the same as other indent rules."
         (cons (funcall parent-bol)
               c-ts-mode-indent-offset))))))
 
+(defun c-ts-mode--emacs-macro-rules (_ parent &rest _)
+  "Rules for indenting macros in Emacs C source.
+
+PARENT is the same as other simple-indent rules."
+  (cond
+   ((and (treesit-node-match-p parent "function_definition")
+         (equal (treesit-node-text
+                 (treesit-node-child-by-field-name parent "type"))
+                "FOR_EACH_TAIL"))
+    (cons (treesit-node-start parent)
+          c-ts-mode-indent-offset))))
+
 (defun c-ts-mode--simple-indent-rules (mode style)
   "Return the indent rules for MODE and STYLE.
 
@@ -466,6 +478,7 @@ MODE can be `c' or `cpp'.  STYLE can be `gnu', `k&r', 
`linux', `bsd'."
            c-ts-mode--label-indent-rules
            ,@c-ts-mode--preproc-indent-rules
            c-ts-mode--macro-heuristic-rules
+           c-ts-mode--emacs-macro-rules
 
            ;; Make sure type and function definition components align and
            ;; don't indent. Also takes care of GNU style opening braces.



reply via email to

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