emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-25 8be046f: Respect fontification region calculated


From: Alan Mackenzie
Subject: [Emacs-diffs] emacs-25 8be046f: Respect fontification region calculated by major mode. Fixes bug #22316.
Date: Fri, 08 Jan 2016 14:41:13 +0000

branch: emacs-25
commit 8be046f453b3f74eaf41154f28b85d45d2cc3844
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>

    Respect fontification region calculated by major mode.  Fixes bug #22316.
    
    * lisp/font-lock.el (font-lock-extend-jit-lock-region-after-change): when a
    fontification region has been calculated by a function on
    font-lock-extend-after-change-region-function use this region rather than
    changing the end position to somewhere else.
---
 lisp/font-lock.el |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 4a92069..3c1f01d 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1302,15 +1302,18 @@ This function does 2 things:
                       (point-min))))
       (when (< end (point-max))
         (setq end
-              (if (get-text-property end 'font-lock-multiline)
-                  (or (text-property-any end (point-max)
-                                         'font-lock-multiline nil)
-                      (point-max))
+              (cond
+               ((get-text-property end 'font-lock-multiline)
+                (or (text-property-any end (point-max)
+                                       'font-lock-multiline nil)
+                    (point-max)))
+               ;; If `end' has been set by the function above, don't corrupt 
it.
+               (font-lock-extend-after-change-region-function end)
                 ;; Rounding up to a whole number of lines should include the
                 ;; line right after `end'.  Typical case: the first char of
                 ;; the line was deleted.  Or a \n was inserted in the middle
                 ;; of a line.
-                (1+ end))))
+               (t (1+ end)))))
       ;; Finally, pre-enlarge the region to a whole number of lines, to try
       ;; and anticipate what font-lock-default-fontify-region will do, so as to
       ;; avoid double-redisplay.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]