GNU bug report logs -
#71518
30.0.50; Errors during redisplay with c++-ts-mode
Previous Next
Reported by: Eli Zaretskii <eliz <at> gnu.org>
Date: Wed, 12 Jun 2024 12:34:02 UTC
Severity: normal
Merged with 71680
Found in version 30.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
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 71518 in the body.
You can then email your comments to 71518 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
casouri <at> gmail.com, bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Wed, 12 Jun 2024 12:34:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
New bug report received and forwarded. Copy sent to
casouri <at> gmail.com, bug-gnu-emacs <at> gnu.org
.
(Wed, 12 Jun 2024 12:34:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
To reproduce in "emacs -Q", visit some C++ source file (I used
breakpoint.c from the GDB sources), then turn on c++-ts-mode. The
fontification is all incorrect, and *Messages* has these error
messages:
Error during redisplay: (jit-lock-function 7286) signaled (treesit-query-error "Node type error at" 575 "[\"_Atomic\" \"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\" \"volatile\" \"while\" \"and\" \"and_eq\" \"bitand\" \"bitor\" \"catch\" \"class\" \"co_await\" \"co_return\" \"co_yield\" \"compl\" \"concept\" \"consteval\" \"constexpr\" \"constinit\" \"decltype\" \"delete\" \"explicit\" \"final\" \"friend\" \"mutable\" \"namespace\" \"new\" \"noexcept\" \"not\" \"not_eq\" \"operator\" \"or\" \"or_eq\" \"override\" \"private\" \"protected\" \"public\" \"requires\" \"template\" \"throw\" \"try\" \"typename\" \"using\" \"virtual\" \"xor\" \"xor_eq\"] @font-lock-keyword-face (auto) @font-lock-keyword-face (this) @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
This happens with the latest C++ tree-sitter grammar library. I guess
they made some incompatible change in the grammar or something?
In GNU Emacs 30.0.50 (build 1390, i686-pc-mingw32) of 2024-06-12 built
on ELIZ-PC
Windowing system distributor 'Microsoft Corp.', version 10.0.22631
System Description: Microsoft Windows 10 Enterprise (v10.0.2009.22631.3737)
Configured using:
'configure -C --prefix=/d/usr --with-wide-int
--without-native-compilation --enable-checking=yes,glyphs 'CFLAGS=-O0
-gdwarf-4 -g3''
Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBXML2 MODULES NOTIFY W32NOTIFY
PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XPM ZLIB
Important settings:
value of $LANG: ENU
locale-coding-system: cp1252
Major mode: C++//
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
show-paren-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
minibuffer-regexp-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
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils cl-seq
c++-ts-mode c-ts-mode c-ts-common treesit cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
touch-screen dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars
term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar 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
threads w32notify w32 lcms2 multi-tty move-toolbar make-network-process
emacs)
Memory information:
((conses 16 77555 16252) (symbols 48 8646 0) (strings 16 23283 3114)
(string-bytes 1 664446) (vectors 16 12923)
(vector-slots 8 142312 10122) (floats 8 27 167)
(intervals 40 3770 136) (buffers 896 12))
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Thu, 13 Jun 2024 05:24:01 GMT)
Full text and
rfc822 format available.
Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):
In data mercoledì 12 giugno 2024 14:33:17 CEST, Eli Zaretskii ha scritto:
> To reproduce in "emacs -Q", visit some C++ source file (I used
> breakpoint.c from the GDB sources), then turn on c++-ts-mode. The
> fontification is all incorrect, and *Messages* has these error
> messages:
>
> Error during redisplay: (jit-lock-function 7286) signaled (treesit-query-error "Node type error at" 575 "[\"_Atomic\" \"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\" \"volatile\" \"while\" \"and\" \"and_eq\" \"bitand\" \"bitor\" \"catch\" \"class\" \"co_await\" \"co_return\" \"co_yield\" \"compl\" \"concept\" \"consteval\" \"constexpr\" \"constinit\" \"decltype\" \"delete\" \"explicit\" \"final\" \"friend\" \"mutable\" \"namespace\" \"new\" \"noexcept\" \"not\" \"not_eq\" \"operator\" \"or\" \"or_eq\" \"override\" \"private\" \"protected\" \"public\" \"requires\" \"template\" \"throw\" \"try\" \"typename\" \"using\" \"virtual\" \"xor\" \"xor_eq\"] @font-lock-keyword-face (auto) @font-lock-keyword-face (this) @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
>
> This happens with the latest C++ tree-sitter grammar library. I guess
> they made some incompatible change in the grammar or something?
>
>
Yes, they changed the grammar.
https://github.com/tree-sitter/tree-sitter-cpp/issues/271
V.
>
> In GNU Emacs 30.0.50 (build 1390, i686-pc-mingw32) of 2024-06-12 built
> on ELIZ-PC
> Windowing system distributor 'Microsoft Corp.', version 10.0.22631
> System Description: Microsoft Windows 10 Enterprise (v10.0.2009.22631.3737)
>
> Configured using:
> 'configure -C --prefix=/d/usr --with-wide-int
> --without-native-compilation --enable-checking=yes,glyphs 'CFLAGS=-O0
> -gdwarf-4 -g3''
>
> Configured features:
> ACL GIF GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBXML2 MODULES NOTIFY W32NOTIFY
> PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
> TREE_SITTER WEBP XPM ZLIB
>
> Important settings:
> value of $LANG: ENU
> locale-coding-system: cp1252
>
> Major mode: C++//
>
> Minor modes in effect:
> tooltip-mode: t
> global-eldoc-mode: t
> show-paren-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
> minibuffer-regexp-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
>
> Load-path shadows:
> None found.
>
> Features:
> (shadow sort mail-extr emacsbug message mailcap yank-media puny dired
> dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
> epg-config gnus-util text-property-search time-date subr-x mm-decode
> mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
> sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils cl-seq
> c++-ts-mode c-ts-mode c-ts-common treesit cc-mode cc-fonts cc-guess
> cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
> cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric
> uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
> touch-screen dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars
> term/common-win tool-bar dnd fontset image regexp-opt fringe
> tabulated-list replace newcomment text-mode lisp-mode prog-mode register
> page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
> scroll-bar 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
> threads w32notify w32 lcms2 multi-tty move-toolbar make-network-process
> emacs)
>
> Memory information:
> ((conses 16 77555 16252) (symbols 48 8646 0) (strings 16 23283 3114)
> (string-bytes 1 664446) (vectors 16 12923)
> (vector-slots 8 142312 10122) (floats 8 27 167)
> (intervals 40 3770 136) (buffers 896 12))
>
>
>
>
--
Those who can't write, write manuals.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Thu, 13 Jun 2024 05:24:05 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Thu, 13 Jun 2024 06:52:02 GMT)
Full text and
rfc822 format available.
Message #14 received at submit <at> debbugs.gnu.org (full text, mbox):
> On Jun 12, 2024, at 6:53 AM, Vincenzo Pupillo <vincenzo.pupillo <at> lpsd.it> wrote:
>
>
> In data mercoledì 12 giugno 2024 14:33:17 CEST, Eli Zaretskii ha scritto:
>> To reproduce in "emacs -Q", visit some C++ source file (I used
>> breakpoint.c from the GDB sources), then turn on c++-ts-mode. The
>> fontification is all incorrect, and *Messages* has these error
>> messages:
>>
>> Error during redisplay: (jit-lock-function 7286) signaled (treesit-query-error "Node type error at" 575 "[\"_Atomic\" \"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\" \"volatile\" \"while\" \"and\" \"and_eq\" \"bitand\" \"bitor\" \"catch\" \"class\" \"co_await\" \"co_return\" \"co_yield\" \"compl\" \"concept\" \"consteval\" \"constexpr\" \"constinit\" \"decltype\" \"delete\" \"explicit\" \"final\" \"friend\" \"mutable\" \"namespace\" \"new\" \"noexcept\" \"not\" \"not_eq\" \"operator\" \"or\" \"or_eq\" \"override\" \"private\" \"protected\" \"public\" \"requires\" \"template\" \"throw\" \"try\" \"typename\" \"using\" \"virtual\" \"xor\" \"xor_eq\"] @font-lock-keyword-face (auto) @font-lock-keyword-face (this) @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
>>
>> This happens with the latest C++ tree-sitter grammar library. I guess
>> they made some incompatible change in the grammar or something?
>>
>>
> Yes, they changed the grammar.
> https://github.com/tree-sitter/tree-sitter-cpp/issues/271
>
> V.
So it seems “virtual” is now a named node rather than an anonymous node, which is a little odd. I asked the author about it in the GitHub issue, let me clear that up before fixing c-ts-mode.
And, Eli, we really really should pin tree-sitter grammars. As more people start using tree-sitter modes, they will found out about the breakage before we do and the tree-sitter major mode would be unusable for them before they upgrade their grammar. Most of them will not know how to do it and which commit to downgrade to. And I really don’t want to chase the random changes these grammars make all the time. Fixing for these breakages is arguably a heavier maintenance burden than pinning tree-sitter grammars.
Yuan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Thu, 13 Jun 2024 06:59:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Thu, 13 Jun 2024 08:25:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 71518 <at> debbugs.gnu.org (full text, mbox):
> From: Yuan Fu <casouri <at> gmail.com>
> Date: Wed, 12 Jun 2024 23:51:21 -0700
> Cc: 71518 <at> debbugs.gnu.org,
> Bug Report Emacs <bug-gnu-emacs <at> gnu.org>,
> Eli Zaretskii <eliz <at> gnu.org>
>
> So it seems “virtual” is now a named node rather than an anonymous node, which is a little odd. I asked the author about it in the GitHub issue, let me clear that up before fixing c-ts-mode.
Thanks.
> And, Eli, we really really should pin tree-sitter grammars. As more people start using tree-sitter modes, they will found out about the breakage before we do and the tree-sitter major mode would be unusable for them before they upgrade their grammar. Most of them will not know how to do it and which commit to downgrade to. And I really don’t want to chase the random changes these grammars make all the time. Fixing for these breakages is arguably a heavier maintenance burden than pinning tree-sitter grammars.
But we've been through this already: pinning versions is impractical,
except for those of us who build their own grammar libraries and can
checkout and build the specific pinned revision. The rest of the
users, who rely on grammars compiled by someone else, will have no
practical way of using the TS modes, unless that someone happens to
provide the pinned version.
And what is the mechanism of selecting the pinned version? Who and
how will determine which version to pin, and how will we indicate
those versions in Emacs? This was never finalized, and is not trivial
at all.
When we discussed that, there was a question of how the various
distros handle these libraries, if they at all distribute that. Did
we learn something new about this?
If nothing has changed since we discussed that, why are you saying now
that we "really should pin"? That other editors use pinned versions
doesn't mean it's a good solution, for us or in general. It
definitely has a disadvantage of preventing users to upgrade the
grammar libraries until the next Emacs release (which could be several
months or even a year away), and the advantage is quite illusory.
yes, without pinning we have a maintenance headache on our hands, but
if there's no better alternative, what else can we do?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Thu, 13 Jun 2024 08:58:01 GMT)
Full text and
rfc822 format available.
Message #23 received at submit <at> debbugs.gnu.org (full text, mbox):
In data giovedì 13 giugno 2024 08:51:21 CEST, Yuan Fu ha scritto:
>
> > On Jun 12, 2024, at 6:53 AM, Vincenzo Pupillo <vincenzo.pupillo <at> lpsd.it> wrote:
> >
> >
> > In data mercoledì 12 giugno 2024 14:33:17 CEST, Eli Zaretskii ha scritto:
> >> To reproduce in "emacs -Q", visit some C++ source file (I used
> >> breakpoint.c from the GDB sources), then turn on c++-ts-mode. The
> >> fontification is all incorrect, and *Messages* has these error
> >> messages:
> >>
> >> Error during redisplay: (jit-lock-function 7286) signaled (treesit-query-error "Node type error at" 575 "[\"_Atomic\" \"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\" \"volatile\" \"while\" \"and\" \"and_eq\" \"bitand\" \"bitor\" \"catch\" \"class\" \"co_await\" \"co_return\" \"co_yield\" \"compl\" \"concept\" \"consteval\" \"constexpr\" \"constinit\" \"decltype\" \"delete\" \"explicit\" \"final\" \"friend\" \"mutable\" \"namespace\" \"new\" \"noexcept\" \"not\" \"not_eq\" \"operator\" \"or\" \"or_eq\" \"override\" \"private\" \"protected\" \"public\" \"requires\" \"template\" \"throw\" \"try\" \"typename\" \"using\" \"virtual\" \"xor\" \"xor_eq\"] @font-lock-keyword-face (auto) @font-lock-keyword-face (this) @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
> >>
> >> This happens with the latest C++ tree-sitter grammar library. I guess
> >> they made some incompatible change in the grammar or something?
> >>
> >>
> > Yes, they changed the grammar.
> > https://github.com/tree-sitter/tree-sitter-cpp/issues/271
> >
> > V.
>
> So it seems “virtual” is now a named node rather than an anonymous node, which is a little odd. I asked the author about it in the GitHub issue, let me clear that up before fixing c-ts-mode.
>
> And, Eli, we really really should pin tree-sitter grammars. As more people start using tree-sitter modes, they will found out about the breakage before we do and the tree-sitter major mode would be unusable for them before they upgrade their grammar. Most of them will not know how to do it and which commit to downgrade to. And I really don’t want to chase the random changes these grammars make all the time. Fixing for these breakages is arguably a heavier maintenance burden than pinning tree-sitter grammars.
+1.
This is why php-ts-mode has a feature just for installing specific versions of grammars (unfortunately phpdoc has no tags on the repository :-( )
Vincenzo
>
> Yuan
>
>
>
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Thu, 13 Jun 2024 08:59:02 GMT)
Full text and
rfc822 format available.
Merged 71518 71680.
Request was from
Eli Zaretskii <eliz <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Thu, 20 Jun 2024 16:40:03 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 08:28:02 GMT)
Full text and
rfc822 format available.
Message #31 received at 71518 <at> debbugs.gnu.org (full text, mbox):
Ping! Any progress with this bug?
> From: Yuan Fu <casouri <at> gmail.com>
> Date: Wed, 12 Jun 2024 23:51:21 -0700
> Cc: 71518 <at> debbugs.gnu.org,
> Bug Report Emacs <bug-gnu-emacs <at> gnu.org>,
> Eli Zaretskii <eliz <at> gnu.org>
>
>
>
> > On Jun 12, 2024, at 6:53 AM, Vincenzo Pupillo <vincenzo.pupillo <at> lpsd.it> wrote:
> >
> >
> > In data mercoledì 12 giugno 2024 14:33:17 CEST, Eli Zaretskii ha scritto:
> >> To reproduce in "emacs -Q", visit some C++ source file (I used
> >> breakpoint.c from the GDB sources), then turn on c++-ts-mode. The
> >> fontification is all incorrect, and *Messages* has these error
> >> messages:
> >>
> >> Error during redisplay: (jit-lock-function 7286) signaled (treesit-query-error "Node type error at" 575 "[\"_Atomic\" \"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\" \"volatile\" \"while\" \"and\" \"and_eq\" \"bitand\" \"bitor\" \"catch\" \"class\" \"co_await\" \"co_return\" \"co_yield\" \"compl\" \"concept\" \"consteval\" \"constexpr\" \"constinit\" \"decltype\" \"delete\" \"explicit\" \"final\" \"friend\" \"mutable\" \"namespace\" \"new\" \"noexcept\" \"not\" \"not_eq\" \"operator\" \"or\" \"or_eq\" \"override\" \"private\" \"protected\" \"public\" \"requires\" \"template\" \"throw\" \"try\" \"typename\" \"using\" \"virtual\" \"xor\" \"xor_eq\"] @font-lock-keyword-face (auto) @font-lock-keyword-face (this) @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
> >>
> >> This happens with the latest C++ tree-sitter grammar library. I guess
> >> they made some incompatible change in the grammar or something?
> >>
> >>
> > Yes, they changed the grammar.
> > https://github.com/tree-sitter/tree-sitter-cpp/issues/271
> >
> > V.
>
> So it seems “virtual” is now a named node rather than an anonymous node, which is a little odd. I asked the author about it in the GitHub issue, let me clear that up before fixing c-ts-mode.
>
> And, Eli, we really really should pin tree-sitter grammars. As more people start using tree-sitter modes, they will found out about the breakage before we do and the tree-sitter major mode would be unusable for them before they upgrade their grammar. Most of them will not know how to do it and which commit to downgrade to. And I really don’t want to chase the random changes these grammars make all the time. Fixing for these breakages is arguably a heavier maintenance burden than pinning tree-sitter grammars.
>
> Yuan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 14:44:01 GMT)
Full text and
rfc822 format available.
Message #34 received at 71518 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi Eli,
fortunately, this time it was easier than usual!
Ciao.
Vincenzo
In data sabato 22 giugno 2024 10:26:43 CEST, Eli Zaretskii ha scritto:
> Ping! Any progress with this bug?
>
> > From: Yuan Fu <casouri <at> gmail.com>
> > Date: Wed, 12 Jun 2024 23:51:21 -0700
> > Cc: 71518 <at> debbugs.gnu.org,
> >
> > Bug Report Emacs <bug-gnu-emacs <at> gnu.org>,
> > Eli Zaretskii <eliz <at> gnu.org>
> >
> > > On Jun 12, 2024, at 6:53 AM, Vincenzo Pupillo <vincenzo.pupillo <at> lpsd.it>
> > > wrote:> >
> > > In data mercoledì 12 giugno 2024 14:33:17 CEST, Eli Zaretskii ha
scritto:
> > >> To reproduce in "emacs -Q", visit some C++ source file (I used
> > >> breakpoint.c from the GDB sources), then turn on c++-ts-mode. The
> > >> fontification is all incorrect, and *Messages* has these error
> > >>
> > >> messages:
> > >> Error during redisplay: (jit-lock-function 7286) signaled
> > >> (treesit-query-error "Node type error at" 575 "[\"_Atomic\" \"break\"
> > >> \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\"
> > >> \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\"
> > >> \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\"
> > >> \"typedef\" \"union\" \"volatile\" \"while\" \"and\" \"and_eq\"
> > >> \"bitand\" \"bitor\" \"catch\" \"class\" \"co_await\" \"co_return\"
> > >> \"co_yield\" \"compl\" \"concept\" \"consteval\" \"constexpr\"
> > >> \"constinit\" \"decltype\" \"delete\" \"explicit\" \"final\"
> > >> \"friend\" \"mutable\" \"namespace\" \"new\" \"noexcept\" \"not\"
> > >> \"not_eq\" \"operator\" \"or\" \"or_eq\" \"override\" \"private\"
> > >> \"protected\" \"public\" \"requires\" \"template\" \"throw\" \"try\"
> > >> \"typename\" \"using\" \"virtual\" \"xor\" \"xor_eq\"]
> > >> @font-lock-keyword-face (auto) @font-lock-keyword-face (this)
> > >> @font-lock-keyword-face" "Debug the query with
> > >> `treesit-query-validate'")> >>
> > >> This happens with the latest C++ tree-sitter grammar library. I guess
> > >> they made some incompatible change in the grammar or something?
> > >
> > > Yes, they changed the grammar.
> > > https://github.com/tree-sitter/tree-sitter-cpp/issues/271
> > >
> > > V.
> >
> > So it seems “virtual” is now a named node rather than an anonymous node,
> > which is a little odd. I asked the author about it in the GitHub issue,
> > let me clear that up before fixing c-ts-mode.
> >
> > And, Eli, we really really should pin tree-sitter grammars. As more people
> > start using tree-sitter modes, they will found out about the breakage
> > before we do and the tree-sitter major mode would be unusable for them
> > before they upgrade their grammar. Most of them will not know how to do
> > it and which commit to downgrade to. And I really don’t want to chase the
> > random changes these grammars make all the time. Fixing for these
> > breakages is arguably a heavier maintenance burden than pinning
> > tree-sitter grammars.
> >
> > Yuan
[0001-Fix-for-grammar-change-of-keyword-virtual-in-tree-si.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 15:58:01 GMT)
Full text and
rfc822 format available.
Message #37 received at 71518 <at> debbugs.gnu.org (full text, mbox):
> From: Vincenzo Pupillo <v.pupillo <at> gmail.com>
> Cc: 71518 <at> debbugs.gnu.org
> Date: Sat, 22 Jun 2024 16:42:09 +0200
>
> fortunately, this time it was easier than usual!
Thanks, but this change will _require_ the new version of the grammar
library, right? I think we usually fix these problems in a way that
both the old and the new versions are supported, because people could
have different versions installed.
Could you please amend the fix along these lines?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 16:17:02 GMT)
Full text and
rfc822 format available.
Message #40 received at 71518 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
In data sabato 22 giugno 2024 17:57:21 CEST, Eli Zaretskii ha scritto:
> > From: Vincenzo Pupillo <v.pupillo <at> gmail.com>
> > Cc: 71518 <at> debbugs.gnu.org
> > Date: Sat, 22 Jun 2024 16:42:09 +0200
> >
> > fortunately, this time it was easier than usual!
>
> Thanks, but this change will _require_ the new version of the grammar
> library, right? I think we usually fix these problems in a way that
> both the old and the new versions are supported, because people could
> have different versions installed.
In the tests I have done, it works with both the new and the old grammar.
>
> Could you please amend the fix along these lines?
Okay, done. Can this be okay?
Thanks.
Vincenzo
[0001-Fix-for-grammar-change-of-keyword-virtual-in-tree-si.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 16:57:02 GMT)
Full text and
rfc822 format available.
Message #43 received at 71518 <at> debbugs.gnu.org (full text, mbox):
> From: Vincenzo Pupillo <v.pupillo <at> gmail.com>
> Cc: casouri <at> gmail.com, 71518 <at> debbugs.gnu.org
> Date: Sat, 22 Jun 2024 18:14:54 +0200
>
> > > fortunately, this time it was easier than usual!
> >
> > Thanks, but this change will _require_ the new version of the grammar
> > library, right? I think we usually fix these problems in a way that
> > both the old and the new versions are supported, because people could
> > have different versions installed.
>
> In the tests I have done, it works with both the new and the old grammar.
>
> >
> > Could you please amend the fix along these lines?
> Okay, done. Can this be okay?
Hmm... I still see an error message in *Messages* after installing
this (I have grammar library version 0.22.2):
Error during redisplay: (jit-lock-function 1) signaled (treesit-query-error "Node type error at" 2 "(virtual) @font-lock-keyword-face [\"auto\" \"_Atomic\" \"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\" \"volatile\" \"while\"] @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
Any ideas or suggestions? "virtual" is highlighted, though, so I
guess this is a matter of suppressing the errors or something?
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 17:04:02 GMT)
Full text and
rfc822 format available.
Message #46 received at 71518 <at> debbugs.gnu.org (full text, mbox):
> Cc: 71518 <at> debbugs.gnu.org, casouri <at> gmail.com
> Date: Sat, 22 Jun 2024 19:56:34 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
>
> Hmm... I still see an error message in *Messages* after installing
> this (I have grammar library version 0.22.2):
>
> Error during redisplay: (jit-lock-function 1) signaled (treesit-query-error "Node type error at" 2 "(virtual) @font-lock-keyword-face [\"auto\" \"_Atomic\" \"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\" \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\" \"volatile\" \"while\"] @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
>
> Any ideas or suggestions? "virtual" is highlighted, though, so I
> guess this is a matter of suppressing the errors or something?
E.g., you can see in go-ts-mode.el how the code probes whether a
certain query is supported, and uses it only if it is.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 18:01:02 GMT)
Full text and
rfc822 format available.
Message #49 received at 71518 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
In data sabato 22 giugno 2024 19:03:43 CEST, Eli Zaretskii ha scritto:
> > Cc: 71518 <at> debbugs.gnu.org, casouri <at> gmail.com
> > Date: Sat, 22 Jun 2024 19:56:34 +0300
> > From: Eli Zaretskii <eliz <at> gnu.org>
> >
> > Hmm... I still see an error message in *Messages* after installing
> >
> > this (I have grammar library version 0.22.2):
> > Error during redisplay: (jit-lock-function 1) signaled
> > (treesit-query-error "Node type error at" 2 "(virtual)
> > @font-lock-keyword-face [\"auto\" \"_Atomic\" \"break\" \"case\"
> > \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\"
> > \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\"
> > \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\"
> > \"volatile\" \"while\"] @font-lock-keyword-face" "Debug the query with
> > `treesit-query-validate'")>
> > Any ideas or suggestions? "virtual" is highlighted, though, so I
> > guess this is a matter of suppressing the errors or something?
>
> E.g., you can see in go-ts-mode.el how the code probes whether a
> certain query is supported, and uses it only if it is.
Sorry, I only tested with .cpp files.
The rule had to be protected by (when (eq mode 'cpp)...
Now I have tested this with *.c and *.h as well, with old and new grammar.
Thanks
Vincenzo
[0001-Fix-for-grammar-change-of-keyword-virtual-in-tree-si.patch (text/x-patch, attachment)]
Reply sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
You have taken responsibility.
(Sat, 22 Jun 2024 18:16:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
bug acknowledged by developer.
(Sat, 22 Jun 2024 18:16:02 GMT)
Full text and
rfc822 format available.
Message #54 received at 71518-done <at> debbugs.gnu.org (full text, mbox):
> From: Vincenzo Pupillo <v.pupillo <at> gmail.com>
> Cc: 71518 <at> debbugs.gnu.org, casouri <at> gmail.com
> Date: Sat, 22 Jun 2024 19:59:42 +0200
>
> In data sabato 22 giugno 2024 19:03:43 CEST, Eli Zaretskii ha scritto:
> > > Cc: 71518 <at> debbugs.gnu.org, casouri <at> gmail.com
> > > Date: Sat, 22 Jun 2024 19:56:34 +0300
> > > From: Eli Zaretskii <eliz <at> gnu.org>
> > >
> > > Hmm... I still see an error message in *Messages* after installing
> > >
> > > this (I have grammar library version 0.22.2):
> > > Error during redisplay: (jit-lock-function 1) signaled
> > > (treesit-query-error "Node type error at" 2 "(virtual)
> > > @font-lock-keyword-face [\"auto\" \"_Atomic\" \"break\" \"case\"
> > > \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\"
> > > \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\" \"return\"
> > > \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\"
> > > \"volatile\" \"while\"] @font-lock-keyword-face" "Debug the query with
> > > `treesit-query-validate'")>
> > > Any ideas or suggestions? "virtual" is highlighted, though, so I
> > > guess this is a matter of suppressing the errors or something?
> >
> > E.g., you can see in go-ts-mode.el how the code probes whether a
> > certain query is supported, and uses it only if it is.
> Sorry, I only tested with .cpp files.
> The rule had to be protected by (when (eq mode 'cpp)...
>
> Now I have tested this with *.c and *.h as well, with old and new grammar.
Thanks, installed on master, and closing the bug.
Reply sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
You have taken responsibility.
(Sat, 22 Jun 2024 18:16:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Daniel Colascione <dancol <at> dancol.org>
:
bug acknowledged by developer.
(Sat, 22 Jun 2024 18:16:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 18:17:01 GMT)
Full text and
rfc822 format available.
Message #62 received at 71518 <at> debbugs.gnu.org (full text, mbox):
In data sabato 22 giugno 2024 19:59:42 CEST, Vincenzo Pupillo ha scritto:
> In data sabato 22 giugno 2024 19:03:43 CEST, Eli Zaretskii ha scritto:
> > > Cc: 71518 <at> debbugs.gnu.org, casouri <at> gmail.com
> > > Date: Sat, 22 Jun 2024 19:56:34 +0300
> > > From: Eli Zaretskii <eliz <at> gnu.org>
> > >
> > > Hmm... I still see an error message in *Messages* after installing
> > >
> > > this (I have grammar library version 0.22.2):
> > > Error during redisplay: (jit-lock-function 1) signaled
> > > (treesit-query-error "Node type error at" 2 "(virtual)
> > > @font-lock-keyword-face [\"auto\" \"_Atomic\" \"break\" \"case\"
> > > \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\"
> > > \"for\" \"goto\" \"if\" \"inline\" \"register\" \"restrict\"
> > > \"return\"
> > > \"sizeof\" \"static\" \"struct\" \"switch\" \"typedef\" \"union\"
> > > \"volatile\" \"while\"] @font-lock-keyword-face" "Debug the query with
> > > `treesit-query-validate'")>
> > >
> > > Any ideas or suggestions? "virtual" is highlighted, though, so I
> > > guess this is a matter of suppressing the errors or something?
> >
> > E.g., you can see in go-ts-mode.el how the code probes whether a
> > certain query is supported, and uses it only if it is.
>
> Sorry, I only tested with .cpp files.
> The rule had to be protected by (when (eq mode 'cpp)...
>
> Now I have tested this with *.c and *.h as well, with old and new grammar.
>
> Thanks
> Vincenzo
I forgot to add that I have another patch that tests the grammar, but it
doesn't seem to help in this case. With both the old and the new grammar, the
node is identified as (virtual "virtual").
Vincenzo
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 18:20:03 GMT)
Full text and
rfc822 format available.
Message #65 received at 71518 <at> debbugs.gnu.org (full text, mbox):
> From: Vincenzo Pupillo <v.pupillo <at> gmail.com>
> Cc: 71518 <at> debbugs.gnu.org, casouri <at> gmail.com
> Date: Sat, 22 Jun 2024 20:15:39 +0200
>
> I forgot to add that I have another patch that tests the grammar, but it
> doesn't seem to help in this case. With both the old and the new grammar, the
> node is identified as (virtual "virtual").
OK, thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#71518
; Package
emacs
.
(Sat, 22 Jun 2024 23:20:02 GMT)
Full text and
rfc822 format available.
Message #68 received at 71518 <at> debbugs.gnu.org (full text, mbox):
> On Jun 22, 2024, at 11:19 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:
>
>> From: Vincenzo Pupillo <v.pupillo <at> gmail.com>
>> Cc: 71518 <at> debbugs.gnu.org, casouri <at> gmail.com
>> Date: Sat, 22 Jun 2024 20:15:39 +0200
>>
>> I forgot to add that I have another patch that tests the grammar, but it
>> doesn't seem to help in this case. With both the old and the new grammar, the
>> node is identified as (virtual "virtual").
>
> OK, thanks.
Thanks to you both, I was a bit busy this week 😬
Yuan
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sun, 21 Jul 2024 11:24:08 GMT)
Full text and
rfc822 format available.
This bug report was last modified 330 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.