Subject: bug#70367: closed (Re: bug#70367: 30.0.50; Inconsistent Syntax Highlighting)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 14 Apr 2024 08:35:05 +0000

Your bug report

#70367: 30.0.50; Inconsistent Syntax Highlighting

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
70367: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70367
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#70367: 30.0.50; Inconsistent Syntax Highlighting
From: Alan Mackenzie <[email-masked]>
To: Amol Surati <[email-masked]>
Cc: [email-masked], Eli Zaretskii <[email-masked]>, Stephen Berman <[email-masked]>, [email-masked]
Date: Sun, 14 Apr 2024 08:33:49 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello, Amol.

On Sun, Apr 14, 2024 at 10:37:32 +0530, Amol Surati wrote:
> Hello, Alan.

> On Sun, 14 Apr 2024 at 08:16, Alan Mackenzie <[email-masked]> wrote:

> > 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:

[ .... ]

> > > 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.

Thanks for the rapid testing!  It would appear the bug has been fixed, so
I've committed the fix to Emacs, CC Mode, and XEmacs.  I'm closing the
bug with this post.

> -Amol

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).

Subject: 30.0.50; Inconsistent Syntax Highlighting
From: Amol Surati <[email-masked]>
To: [email-masked]
Date: Sat, 13 Apr 2024 18:12:54 +0530
List-Id: <debbugs-submit.debbugs.gnu.org>

--text follows this line--

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.

Thank you,
Amol Surati

[1] https://drive.google.com/file/d/1C2pSlh3x1g91lUsErryLnLP5995Jcg6c/
[2] https://pastebin.com/UiKSZWm7
------------------------------------------------------------------------

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu)
Repository revision: 8b210a636fe426f47bccdb111af61d6310755dde
Repository branch: master
System Description: Arch Linux

Configured using:
 'configure --prefix=/home/user/tools/emacs --without-all
 --with-native-compilation=aot --with-zlib --without-x --without-json
 --without-sound --with-small-ja-dic --disable-build-details
 --without-sqlite3 --with-compress-install 'CFLAGS=-O2 -mtune=native
 -march=native -fomit-frame-pointer''

Configured features:
GMP NATIVE_COMP PDUMPER SECCOMP XIM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  global-display-fill-column-indicator-mode: t
  display-fill-column-indicator-mode: t
  save-place-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  auto-save-visited-mode: t

Load-path shadows:
None found.

Features:
(shadow sort regexp-opt mail-extr emacsbug message mailcap yank-media
puny dired dnd dired-loaddefs rfc822 mml mml-sec password-cache epa
derived epg rfc6068 epg-config gnus-util text-property-search time-date
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils term/xterm xterm byte-opt gv bytecomp byte-compile
modus-vivendi-theme modus-themes subr-x easy-mmode
display-fill-column-indicator saveplace cl-seq cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 126813 13455) (symbols 48 8344 0) (strings 32 19368 1588)
 (string-bytes 1 634561) (vectors 16 7702) (vector-slots 8 94144 6327)
 (floats 8 50 8) (intervals 56 241 1) (buffers 984 11))