diff options
author | Alan Mackenzie <acm@muc.de> | 2021-08-15 18:08:25 +0000 |
---|---|---|
committer | Alan Mackenzie <acm@muc.de> | 2021-08-15 18:11:42 +0000 |
commit | b3aec9ee483c82aa23e604ea61ce0777e9ef2ebd (patch) | |
tree | e1d7c89545b792a56d837821d1d682d362b4ba29 | |
parent | b77f6af24e9193a4f70622cda6d641c58e885c22 (diff) | |
download | emacs-b3aec9ee483c82aa23e604ea61ce0777e9ef2ebd.tar.gz |
CC Mode: Fix unstable fontification of doc strings.
Also optimize a loop over several line doc-comments.
* lisp/progmodes/cc-fonts.el (c-font-lock-doc-comments): New variable
comment-mid, used as the starting point for applying c-doc-face-name in a
line comments. In block comments, apply this face not from `comment-beg' but
from `region-beg', no earlier than the start of the fontification region.
-rw-r--r-- | lisp/progmodes/cc-fonts.el | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index fd00d65e335..5f3e2eaaf80 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -2733,13 +2733,14 @@ need for `pike-font-lock-extra-types'.") ;; ;; This function might do hidden buffer changes. - (let (comment-beg region-beg) + (let (comment-beg region-beg comment-mid) (if (memq (get-text-property (point) 'face) '(font-lock-comment-face font-lock-comment-delimiter-face)) ;; Handle the case when the fontified region starts inside a ;; comment. (let ((start (c-literal-start))) - (setq region-beg (point)) + (setq region-beg (point) + comment-mid (point)) (when start (goto-char start)) (when (looking-at prefix) @@ -2765,7 +2766,8 @@ need for `pike-font-lock-extra-types'.") (goto-char comment-beg) (c-in-literal))))) (setq comment-beg nil)) - (setq region-beg comment-beg)) + (setq region-beg comment-beg + comment-mid comment-beg)) (if (elt (parse-partial-sexp comment-beg (+ comment-beg 2)) 7) ;; Collect a sequence of doc style line comments. @@ -2773,15 +2775,16 @@ need for `pike-font-lock-extra-types'.") (goto-char comment-beg) (while (and (progn (c-forward-single-comment) - (c-put-font-lock-face comment-beg (point) + (c-put-font-lock-face comment-mid (point) c-doc-face-name) (skip-syntax-forward " ") - (setq comment-beg (point)) + (setq comment-beg (point) + comment-mid (point)) (< (point) limit)) (looking-at prefix)))) (goto-char comment-beg) (c-forward-single-comment) - (c-put-font-lock-face comment-beg (point) c-doc-face-name)) + (c-put-font-lock-face region-beg (point) c-doc-face-name)) (if (> (point) limit) (goto-char limit)) (setq comment-beg nil) |