GNU bug report logs - #28098
26.0.50; bad C fontification

Previous Next

Packages: emacs, cc-mode;

Reported by: Marti Bolivar <marti.f.bolivar <at> gmail.com>

Date: Tue, 15 Aug 2017 15:28:01 UTC

Severity: minor

Found in version 26.0.50

Done: Alan Mackenzie <acm <at> muc.de>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 28098 in the body.
You can then email your comments to 28098 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#28098; Package emacs. (Tue, 15 Aug 2017 15:28:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Marti Bolivar <marti.f.bolivar <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 15 Aug 2017 15:28:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Marti Bolivar <marti.f.bolivar <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.0.50; bad C fontification
Date: Tue, 15 Aug 2017 10:45:33 -0400
[Message part 1 (text/plain, inline)]
1. From emacs -Q, open this file:


https://github.com/zephyrproject-rtos/zephyr/blob/2de59023dc726e61244eb7cca17252294016c65a/subsys/net/lib/http/http_client.c

2. Observe incorrect syntax highlighting at beginning of file. Screenshot:

   https://postimg.org/image/tzy8qgjjz/

   (Note that loading a C file with just the #ifdefs and initial
   comment which fail to highlight above doesn't reproduce the issue.)


In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2017-08-10 built on plop
Repository revision: 81656add8117e8d1b7faab18b330d0706462b433
Windowing system distributor 'The X.Org Foundation', version 11.0.11903000
System Description: Ubuntu 17.04

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Making completion list...
mwheel-scroll: Beginning of buffer [21 times]
Making completion list...

Configured using:
 'configure --without-pop'

Configured features:
XPM JPEG TIFF GIF PNG SOUND DBUS GSETTINGS NOTIFY GNUTLS FREETYPE XFT
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: C/*l

Minor modes in effect:
  diff-auto-refine-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message subr-x puny seq byte-opt gv
bytecomp byte-compile cconv dired dired-loaddefs format-spec rfc822 mml
mml-sec password-cache epa derived epg epg-config gnus-util rmail
rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils vc-git diff-mode easy-mmode cc-mode
cc-fonts easymenu cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs cl-loaddefs cl-lib time-date mule-util tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win
x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote dbusbind inotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 123261 11555)
 (symbols 48 22839 1)
 (miscs 40 60 140)
 (strings 32 35859 1155)
 (string-bytes 1 1079093)
 (vectors 16 17814)
 (vector-slots 8 527552 12359)
 (floats 8 52 134)
 (intervals 56 1378 3)
 (buffers 992 13))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#28098; Package emacs,cc-mode. (Wed, 16 Aug 2017 17:50:02 GMT) Full text and rfc822 format available.

Message #8 received at 28098 <at> debbugs.gnu.org (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: Marti Bolivar <marti.f.bolivar <at> gmail.com>
Cc: 28098 <at> debbugs.gnu.org
Subject: Re: bug#28098: 26.0.50; bad C fontification
Date: 16 Aug 2017 17:49:48 -0000
Hello, Marti.

In article <mailman.13159.1502810889.21957.bug-gnu-emacs <at> gnu.org> you wrote:
> [-- text/plain, encoding 7bit, charset: UTF-8, 98 lines --]

> 1. From emacs -Q, open this file:


> https://github.com/zephyrproject-rtos/zephyr/blob/2de59023dc726e61244eb7cca17252294016c65a/subsys/net/lib/http/http_client.c

> 2. Observe incorrect syntax highlighting at beginning of file. Screenshot:

>    https://postimg.org/image/tzy8qgjjz/

More precisely, the first ~500 bytes, which consist entirely of comments
and preprocessor directives doesn't get fontified at all.

>    (Note that loading a C file with just the #ifdefs and initial
>    comment which fail to highlight above doesn't reproduce the issue.)

Thanks.  The fact that it's ~500 bytes which don't get fontified suggest
that something is interfering with the first jit-lock chunk.  I'll be
looking into it.  Give me a bit of time.

> In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
>  of 2017-08-10 built on plop
> Repository revision: 81656add8117e8d1b7faab18b330d0706462b433
> Windowing system distributor 'The X.Org Foundation', version 11.0.11903000
> System Description: Ubuntu 17.04

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).




Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#28098; Package emacs,cc-mode. (Wed, 16 Aug 2017 20:58:02 GMT) Full text and rfc822 format available.

Message #11 received at 28098 <at> debbugs.gnu.org (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: Marti Bolivar <marti.f.bolivar <at> gmail.com>
Cc: 28098 <at> debbugs.gnu.org
Subject: Re: bug#28098: 26.0.50; bad C fontification
Date: 16 Aug 2017 20:57:22 -0000
Hello again, Marti.

In article <mailman.13159.1502810889.21957.bug-gnu-emacs <at> gnu.org> you wrote:
> [-- text/plain, encoding 7bit, charset: UTF-8, 98 lines --]

> 1. From emacs -Q, open this file:


> https://github.com/zephyrproject-rtos/zephyr/blob/2de59023dc726e61244eb7cca17252294016c65a/subsys/net/lib/http/http_client.c

> 2. Observe incorrect syntax highlighting at beginning of file. Screenshot:

>    https://postimg.org/image/tzy8qgjjz/

>    (Note that loading a C file with just the #ifdefs and initial
>    comment which fail to highlight above doesn't reproduce the issue.)

I think the following patch should fix the bug.  Would you please apply
it, try it out, and either confirm to me that it fixes the bug, or tell
me what's still wrong:


diff -r 9533dc4cbda3 cc-mode.el
--- a/cc-mode.el	Thu Jul 27 17:37:02 2017 +0000
+++ b/cc-mode.el	Wed Aug 16 20:48:54 2017 +0000
@@ -1529,10 +1529,13 @@
     (c-backward-syntactic-ws)
     (when (setq pos1 (c-on-identifier))
       (goto-char pos1)
-      (when (and (c-forward-declarator)
-		 (eq (c-forward-token-2) 0))
-	(c-backward-syntactic-ws)
-	(point)))))
+      (let ((lim (save-excursion
+		   (and (c-beginning-of-macro)
+			(progn (c-end-of-macro) (point))))))
+	(when (and (c-forward-declarator lim)
+		   (eq (c-forward-token-2 1 nil lim) 0))
+	  (c-backward-syntactic-ws)
+	  (point))))))
 
 (defun c-change-expand-fl-region (beg end old-len)
   ;; Expand the region (c-new-BEG c-new-END) to an after-change font-lock

Thanks for taking the trouble to report this bug.

> In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
>  of 2017-08-10 built on plop
> Repository revision: 81656add8117e8d1b7faab18b330d0706462b433
> Windowing system distributor 'The X.Org Foundation', version 11.0.11903000
> System Description: Ubuntu 17.04

-- 
Alan Mackenzie (Nuremberg, Germany).





Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#28098; Package emacs,cc-mode. (Mon, 21 Aug 2017 19:33:02 GMT) Full text and rfc822 format available.

Message #14 received at 28098 <at> debbugs.gnu.org (full text, mbox):

From: Marti Bolivar <marti.f.bolivar <at> gmail.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 28098 <at> debbugs.gnu.org
Subject: Re: bug#28098: 26.0.50; bad C fontification
Date: Mon, 21 Aug 2017 12:32:30 -0700
[Message part 1 (text/plain, inline)]
Hi Alan,

Thanks for the patch.

On Wed, Aug 16, 2017 at 1:57 PM, Alan Mackenzie <acm <at> muc.de> wrote:

> Hello again, Marti.
>
> In article <mailman.13159.1502810889.21957.bug-gnu-emacs <at> gnu.org> you
> wrote:
> > [-- text/plain, encoding 7bit, charset: UTF-8, 98 lines --]
>
> > 1. From emacs -Q, open this file:
>
>
> > https://github.com/zephyrproject-rtos/zephyr/blob/
> 2de59023dc726e61244eb7cca17252294016c65a/subsys/net/lib/http/http_client.c
>
> > 2. Observe incorrect syntax highlighting at beginning of file.
> Screenshot:
>
> >    https://postimg.org/image/tzy8qgjjz/
>
> >    (Note that loading a C file with just the #ifdefs and initial
> >    comment which fail to highlight above doesn't reproduce the issue.)
>
> I think the following patch should fix the bug.  Would you please apply
> it, try it out, and either confirm to me that it fixes the bug, or tell
> me what's still wrong:
>
>
> diff -r 9533dc4cbda3 cc-mode.el
> --- a/cc-mode.el        Thu Jul 27 17:37:02 2017 +0000
> +++ b/cc-mode.el        Wed Aug 16 20:48:54 2017 +0000
> @@ -1529,10 +1529,13 @@
>      (c-backward-syntactic-ws)
>      (when (setq pos1 (c-on-identifier))
>        (goto-char pos1)
> -      (when (and (c-forward-declarator)
> -                (eq (c-forward-token-2) 0))
> -       (c-backward-syntactic-ws)
> -       (point)))))
> +      (let ((lim (save-excursion
> +                  (and (c-beginning-of-macro)
> +                       (progn (c-end-of-macro) (point))))))
> +       (when (and (c-forward-declarator lim)
> +                  (eq (c-forward-token-2 1 nil lim) 0))
> +         (c-backward-syntactic-ws)
> +         (point))))))
>
>  (defun c-change-expand-fl-region (beg end old-len)
>    ;; Expand the region (c-new-BEG c-new-END) to an after-change font-lock
>

I couldn't manage to get this to apply, but I made the changes manually;
git format-patch output for the relevant commit is attached. This did
indeed resolve the issue.


>
> Thanks for taking the trouble to report this bug.
>
>
Thanks for taking the time to investigate and fix it.

Marti


> > In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
> >  of 2017-08-10 built on plop
> > Repository revision: 81656add8117e8d1b7faab18b330d0706462b433
> > Windowing system distributor 'The X.Org Foundation', version
> 11.0.11903000
> > System Description: Ubuntu 17.04
>
> --
> Alan Mackenzie (Nuremberg, Germany).
>
>
[Message part 2 (text/html, inline)]
[0001-Test-c-fontification-fix.patch (text/x-patch, attachment)]

Reply sent to Alan Mackenzie <acm <at> muc.de>:
You have taken responsibility. (Tue, 22 Aug 2017 17:20:01 GMT) Full text and rfc822 format available.

Notification sent to Marti Bolivar <marti.f.bolivar <at> gmail.com>:
bug acknowledged by developer. (Tue, 22 Aug 2017 17:20:01 GMT) Full text and rfc822 format available.

Message #19 received at 28098-done <at> debbugs.gnu.org (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: Marti Bolivar <marti.f.bolivar <at> gmail.com>
Cc: 28098-done <at> debbugs.gnu.org
Subject: Re: bug#28098: 26.0.50; bad C fontification
Date: Tue, 22 Aug 2017 17:17:45 +0000
On Mon, Aug 21, 2017 at 12:32:30 -0700, Marti Bolivar wrote:
> Hi Alan,

> Thanks for the patch.

[ .... ]

> I couldn't manage to get this to apply, but I made the changes manually;
> git format-patch output for the relevant commit is attached. This did
> indeed resolve the issue.

Sorry about that and thanks for taking the trouble!

I've committed the patch, and am closing the bug with this email.

> Marti

-- 
Alan Mackenzie (Nuremberg, Germany).




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 20 Sep 2017 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 7 years and 274 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.