Package: emacs;
Reported by: Amol Surati <suratiamol <at> gmail.com>
Date: Sat, 13 Apr 2024 16:40:04 UTC
Severity: normal
Found in version 30.0.50
Done: Alan Mackenzie <acm <at> muc.de>
Bug is archived. No further changes may be made.
Message #29 received at 70367 <at> debbugs.gnu.org (full text, mbox):
From: Amol Surati <suratiamol <at> gmail.com> To: Alan Mackenzie <acm <at> muc.de> Cc: Eli Zaretskii <eliz <at> gnu.org>, Stephen Berman <stephen.berman <at> gmx.net>, 70367 <at> debbugs.gnu.org Subject: Re: bug#70367: 30.0.50; Inconsistent Syntax Highlighting Date: Sun, 14 Apr 2024 10:37:32 +0530
Hello, Alan. On Sun, 14 Apr 2024 at 08:16, Alan Mackenzie <acm <at> muc.de> wrote: > > Hello, Amol. > > Thanks for taking the trouble to report this bug, and thanks even more > for the convenient test file generator, which was extremely helpful. Thank you for the kind words. > > On Sun, Apr 14, 2024 at 03:44:01 +0530, Amol Surati wrote: > > On Sun, 14 Apr 2024 at 00:35, Eli Zaretskii <eliz <at> gnu.org> wrote: > > > > > From: Stephen Berman <stephen.berman <at> gmx.net> > > > > Cc: suratiamol <at> gmail.com, 70367 <at> debbugs.gnu.org > > > > Date: Sat, 13 Apr 2024 21:00:16 +0200 > > > > > On Sat, 13 Apr 2024 20:48:28 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote: > > > > > >> Cc: 70367 <at> debbugs.gnu.org > > > > >> Date: Sat, 13 Apr 2024 20:44:37 +0300 > > > > >> From: Eli Zaretskii <eliz <at> gnu.org> > > > > > >> > From: Amol Surati <suratiamol <at> gmail.com> > > > > >> > Date: Sat, 13 Apr 2024 18:12:54 +0530 > > > > > >> > The problem is not found in terminal emacs built from the released 29.3.tar.gz, > > > > >> > or with emacs running under GUI (i.e. under PGTK). > > > > > >> > The problem is seen with terminal emacs built from the master branch, at various > > > > >> > commit levels. > > > > > >> > Problem: When a large file (for e.g. vulkan_core.h) is opened, certain > > > > >> > constructs have their syntax highlighting broken. The video found at [1] shows > > > > >> > the behaviour. At the end of the video, one can see one instance of the problem; > > > > >> > the syntax highlighting for the enum constant > > > > >> > 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,' abruptly breaks. The entire > > > > >> > identifier VK_STRUCTURE_TYPE_EVENT_CREATE_INFO must be one colour. Instead, > > > > >> > 'VK_STRUCTURE_TYPE_EVENT_CREA' is of the expected colour, while > > > > >> > 'TE_INFO' is of the colour that is expected with '= 10,'. You may want to > > > > >> > download the video and then play it, if Google Drive plays it at a resolution > > > > >> > that is lower than the video's native resolution. > > > > > >> > Within this same session, there were other such enum constants with broken > > > > >> > highlighting, though they have not been captured in the video. > > > > >> > The termscript is attached at [2]. > > > > > >> > The graphics session is Wayland with swaywm as its compositor; XWayland is > > > > >> > not enabled. The terminal emulator is 'foot'. Another terminal emulator, > > > > >> > 'alacritty' was also tested; the problem occurred there too. > > > > > >> > The problem doesn't seem to occur with small-sized files; After reducing the > > > > >> > vulkan_core.h to contain only around 235 lines, emacs was able to show the > > > > >> > (reduced) file with consistent highlighting. > > > > > I see exactly the same misfontification as the OP in the same file > > > > (which I happen to have on my system), as well as several more similar > > > > misfontifications further down in that file -- but only with c-mode from > > > > cc-mode.el. With c-ts-mode I see no misfontifications in that file. > > > > This is with GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ > > > > Version 3.24.41, cairo version 1.18.0) of 2024-04-11. > > > > Strange. I see no misfontifications with either mode. > > > Apologies. I missed Eli's email about the C modes. > > > My emacs build is devoid of most of the settings and > > features, including GUI and tree-sitter (the config command is in > > the original report). So it is likely that only cc-mode is affected, > > and not c-ts-mode. > > This is indeed the case. Understood. > > > Note also that vulkan_core.h isn't special. A C source/header file > > with a long enough enum definition also works. Attached is a C > > program that generates to stdout the contents of such a header > > file. Opening the contents (after they are saved to a file by stdout > > redirection, etc.) in emacs demonstrates the problem. > > The problem is long stretches of code (>= 500 characters) where there're > no statement boundaries or braces. These frequently occur in enums. An > ad hoc limit to 500 characters backward search is there for speed. Consistent with the observed behaviour, that it is mostly enums that are affected. > > However, this bit of code was not checking whether it found a > brace/statement or hit the 500 char limit, hence the mis-fontification. > > The patch below tries to fix this. Would you please apply it to > cc-mode.el (in .../lisp/progmodes), byte compile the result, and load it > into your Emacs (or restart Emacs). Then please try it out on the real > files that showed the bug. Please let me know if the bug really is > fixed. (If you want any help with patching or byte compiling, feel free > to send me private email.) Thanks for the patch. It indeed fixes the highlighting problem on the real file vulkan_core.h (I know about only this one real file that's affected), as well as it does on the test file. -Amol > > > > diff -r 709b797bdef8 cc-mode.el > --- a/cc-mode.el Tue Mar 26 20:26:16 2024 +0000 > +++ b/cc-mode.el Sun Apr 14 02:39:32 2024 +0000 > @@ -2437,7 +2437,7 @@ > (backward-char) > (setq pseudo (c-cheap-inside-bracelist-p (c-parse-state))))))) > (goto-char pseudo)) > - t) > + pseudo) > ;; Move forward to the start of the next declaration. > (progn (c-forward-syntactic-ws) > ;; Have we got stuck in a comment at EOB? > > > > -Amol > > > > > Alan, would you please have a look? > > -- > Alan Mackenzie (Nuremberg, Germany).
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.