emacs-devel
[Top][All Lists]
Advanced

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

Re: [Emacs-diffs] emacs-24 d69e9f1: CC Mode: Stop Font Lock forcing font


From: Alan Mackenzie
Subject: Re: [Emacs-diffs] emacs-24 d69e9f1: CC Mode: Stop Font Lock forcing fontification from BOL. Fixes debbugs#19669.
Date: Wed, 18 Mar 2015 12:08:07 +0000
User-agent: Mutt/1.5.23 (2014-03-12)

Hello, Daniel.

On Mon, Mar 16, 2015 at 04:53:28PM -0700, Daniel Colascione wrote:
> On 02/01/2015 01:22 PM, Alan Mackenzie wrote:
> > branch: emacs-24
> > commit d69e9f1c24f37f36af33b0468c5a4e100dbb09b6
> > Author: Alan Mackenzie <address@hidden>
> > Commit: Alan Mackenzie <address@hidden>

> >     CC Mode: Stop Font Lock forcing fontification from BOL.  Fixes 
> > debbugs#19669.

> >     cc-mode.el (c-font-lock-init): Setq font-lock-extend-region-functions to
> >     nil.

> This change is driving me nuts.  Consider the following buffer, with @
> representing point:

> void foo() {
>   @
> }

> If I type [f o r SPC], then depending on timing, I see only the "or", or
> only the "r", fontified in font-lock-keyword-face. A moment later,
> jit-lock kicks in and refontifies the entire chunk properly.

Sorry about this.

> Can we please extend the start of the region back to at least the last `}'?

This could be a tricky one to solve.  For the sake of your sanity, please
consider applying the following temporary patch; it "solves" the current
problem, but unfortunately leaves bug #19669's symptoms apparent again.



diff -r cffcacba7345 cc-mode.el
--- a/cc-mode.el        Sun Feb 01 21:06:18 2015 +0000
+++ b/cc-mode.el        Wed Mar 18 12:04:00 2015 +0000
@@ -1208,7 +1208,17 @@
   ;; Type a space in the first blank line, and the fontification of the next
   ;; line was fouled up by context fontification.
   (let ((new-beg beg) (new-end end) new-region case-fold-search
-       open-paren-in-column-0-is-defun-start)
+       open-paren-in-column-0-is-defun-start
+       ;; Except in the after-change case, prevent
+       ;; `font-lock-default-fontify-region' extending the region it will
+       ;; fontify to whole lines.  The following binding removes
+       ;; `font-lock-extend-region-whole-lines' from
+       ;; `font-lock-extend-region-functions'.  (Emacs only).  This fixes
+       ;; Emacs bug #19669.
+       (font-lock-extend-region-functions
+        (and (boundp 'font-lock-extend-region-functions)
+             c-in-after-change-fontification
+             font-lock-extend-region-functions)))
     (if c-in-after-change-fontification
        (setq c-in-after-change-fontification nil)
       (save-restriction
@@ -1247,13 +1257,13 @@
          (font-lock-mark-block-function
           . c-mark-function)))
 
-  ;; Prevent `font-lock-default-fontify-region' extending the region it will
-  ;; fontify to whole lines by removing `font-lock-extend-region-whole-lines'
-  ;; (and, coincidentally, `font-lock-extend-region-multiline' (which we do
-  ;; not need)) from `font-lock-extend-region-functions'.  (Emacs only).  This
-  ;; fixes Emacs bug #19669.
-  (when (boundp 'font-lock-extend-region-functions)
-    (setq font-lock-extend-region-functions nil))
+  ;; ;; Prevent `font-lock-default-fontify-region' extending the region it will
+  ;; ;; fontify to whole lines by removing 
`font-lock-extend-region-whole-lines'
+  ;; ;; (and, coincidentally, `font-lock-extend-region-multiline' (which we do
+  ;; ;; not need)) from `font-lock-extend-region-functions'.  (Emacs only).  
This
+  ;; ;; fixes Emacs bug #19669.
+  ;; (when (boundp 'font-lock-extend-region-functions)
+  ;;   (setq font-lock-extend-region-functions nil))
 
   (make-local-variable 'font-lock-fontify-region-function)
   (setq font-lock-fontify-region-function 'c-font-lock-fontify-region)


-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

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