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.
This commit is contained in:
Yuan Fu 2023-02-24 19:31:34 -08:00
parent c92360c7a3
commit d25f24fe57
No known key found for this signature in database
GPG key ID: 56E19BC57664A442

View file

@ -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)))