mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Fix c-ts-mode indentation after if/else (bug#67417)
* lisp/progmodes/c-ts-mode.el: (c-ts-mode--prev-line-match): New function. (c-ts-mode--indent-styles): Add a rule for the empty line after if/else/for/etc.
This commit is contained in:
parent
f8d9dc26c7
commit
dab7cc241f
1 changed files with 16 additions and 0 deletions
|
|
@ -355,11 +355,27 @@ PARENT, BOL, ARGS are the same as other anchor functions."
|
|||
(apply (alist-get 'standalone-parent treesit-simple-indent-presets)
|
||||
parent (treesit-node-parent parent) bol args))
|
||||
|
||||
(defun c-ts-mode--prev-line-match (regexp)
|
||||
"An indentation matcher that matches if prev line matches REGEXP."
|
||||
(lambda (_n _p bol &rest _)
|
||||
(save-excursion
|
||||
(goto-char bol)
|
||||
(forward-line -1)
|
||||
(back-to-indentation)
|
||||
(looking-at-p regexp))))
|
||||
|
||||
(defun c-ts-mode--indent-styles (mode)
|
||||
"Indent rules supported by `c-ts-mode'.
|
||||
MODE is either `c' or `cpp'."
|
||||
(let ((common
|
||||
`((c-ts-mode--for-each-tail-body-matcher prev-line c-ts-mode-indent-offset)
|
||||
;; If the user types "if (...)" and hit return, they expect
|
||||
;; the point on the empty line to be indented, this rule
|
||||
;; does that.
|
||||
((and no-node
|
||||
(c-ts-mode--prev-line-match
|
||||
,(rx (or "if" "else" "while" "do" "for"))))
|
||||
prev-line c-ts-mode-indent-offset)
|
||||
|
||||
((parent-is "translation_unit") column-0 0)
|
||||
((query "(ERROR (ERROR)) @indent") column-0 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue