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.
This commit is contained in:
parent
b77f6af24e
commit
b3aec9ee48
1 changed files with 9 additions and 6 deletions
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue