[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.