From: Yuan Fu Date: Sun, 15 Jan 2023 09:01:38 +0000 (-0800) Subject: Fix c-ts-mode block comment indentation (bug#60270) X-Git-Tag: emacs-29.0.90~720^2~1 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=25a5575f161c4f4f2ee42bf15cdefec0bbfc6b33;p=emacs.git Fix c-ts-mode block comment indentation (bug#60270) * lisp/progmodes/c-ts-mode.el: (c-ts-mode--comment-2nd-line-anchor): Handle another edge case. --- diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index 4ed34af52e7..89a08a6fa9c 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -294,14 +294,15 @@ PARENT should be a comment node." (back-to-indentation) (eq (point) (treesit-node-start parent))))) -(defun c-ts-mode--comment-2nd-line-anchor (&rest _) +(defun c-ts-mode--comment-2nd-line-anchor (_n _p bol &rest _) "Return appropriate anchor for the second line of a comment. If the first line is /* alone, return the position right after the star; if the first line is /* followed by some text, return the position right before the text minus 1. -Use an offset of 1 with this anchor." +Use an offset of 1 with this anchor. BOL is the beginning of +non-whitespace characters of the current line." (save-excursion (forward-line -1) (back-to-indentation) @@ -310,8 +311,17 @@ Use an offset of 1 with this anchor." (if (looking-at (rx (* (or " " "\t")) eol)) ;; Only /* at the first line. (progn (skip-chars-backward " \t") - (point)) - ;; There is something after /* at the first line. + (if (save-excursion + (goto-char bol) + (looking-at (rx "*"))) + ;; The common case. Checked by "Multiline Block + ;; Comments 4". + (point) + ;; The "Multiline Block Comments 2" test in + ;; c-ts-mode-resources/indent.erts checks this. + (1- (point)))) + ;; There is something after /* at the first line. The + ;; "Multiline Block Comments 3" test checks this. (1- (point)))))) ;;; Font-lock