]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: Fix unstable fontification of doc strings.
authorAlan Mackenzie <acm@muc.de>
Sun, 15 Aug 2021 18:08:25 +0000 (18:08 +0000)
committerAlan Mackenzie <acm@muc.de>
Sun, 15 Aug 2021 18:11:42 +0000 (18:11 +0000)
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.

lisp/progmodes/cc-fonts.el

index fd00d65e335816c6ce06a73a1f14c37d227bc724..5f3e2eaaf80fcfec35dbc1e2f94a7c665f1b9634 100644 (file)
@@ -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)