* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode @ 2024-06-12 12:33 Eli Zaretskii 2024-06-12 13:53 ` Vincenzo Pupillo 0 siblings, 1 reply; 16+ messages in thread From: Eli Zaretskii @ 2024-06-12 12:33 UTC (permalink / raw) To: 71518; +Cc: Yuan Fu 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\" \"us ing\" \"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)) ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-12 12:33 bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode Eli Zaretskii @ 2024-06-12 13:53 ` Vincenzo Pupillo 2024-06-13 6:51 ` Yuan Fu 0 siblings, 1 reply; 16+ messages in thread From: Vincenzo Pupillo @ 2024-06-12 13:53 UTC (permalink / raw) To: 71518; +Cc: Yuan Fu, Eli Zaretskii 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. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-12 13:53 ` Vincenzo Pupillo @ 2024-06-13 6:51 ` Yuan Fu 2024-06-13 8:24 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 16+ messages in thread From: Yuan Fu @ 2024-06-13 6:51 UTC (permalink / raw) To: Vincenzo Pupillo; +Cc: 71518, eliz > On Jun 12, 2024, at 6:53 AM, Vincenzo Pupillo <vincenzo.pupillo@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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-13 6:51 ` Yuan Fu @ 2024-06-13 8:24 ` Eli Zaretskii 2024-06-13 8:57 ` Vincenzo Pupillo 2024-06-22 8:26 ` Eli Zaretskii 2 siblings, 0 replies; 16+ messages in thread From: Eli Zaretskii @ 2024-06-13 8:24 UTC (permalink / raw) To: Yuan Fu; +Cc: vincenzo.pupillo, 71518 > From: Yuan Fu <casouri@gmail.com> > Date: Wed, 12 Jun 2024 23:51:21 -0700 > Cc: 71518@debbugs.gnu.org, > Bug Report Emacs <bug-gnu-emacs@gnu.org>, > Eli Zaretskii <eliz@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? ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-13 6:51 ` Yuan Fu 2024-06-13 8:24 ` Eli Zaretskii @ 2024-06-13 8:57 ` Vincenzo Pupillo 2024-06-22 8:26 ` Eli Zaretskii 2 siblings, 0 replies; 16+ messages in thread From: Vincenzo Pupillo @ 2024-06-13 8:57 UTC (permalink / raw) To: 71518; +Cc: eliz, casouri 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@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 > > > ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-13 6:51 ` Yuan Fu 2024-06-13 8:24 ` Eli Zaretskii 2024-06-13 8:57 ` Vincenzo Pupillo @ 2024-06-22 8:26 ` Eli Zaretskii 2024-06-22 14:42 ` Vincenzo Pupillo 2 siblings, 1 reply; 16+ messages in thread From: Eli Zaretskii @ 2024-06-22 8:26 UTC (permalink / raw) To: Yuan Fu; +Cc: vincenzo.pupillo, 71518 Ping! Any progress with this bug? > From: Yuan Fu <casouri@gmail.com> > Date: Wed, 12 Jun 2024 23:51:21 -0700 > Cc: 71518@debbugs.gnu.org, > Bug Report Emacs <bug-gnu-emacs@gnu.org>, > Eli Zaretskii <eliz@gnu.org> > > > > > On Jun 12, 2024, at 6:53 AM, Vincenzo Pupillo <vincenzo.pupillo@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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 8:26 ` Eli Zaretskii @ 2024-06-22 14:42 ` Vincenzo Pupillo 2024-06-22 15:57 ` Eli Zaretskii 0 siblings, 1 reply; 16+ messages in thread From: Vincenzo Pupillo @ 2024-06-22 14:42 UTC (permalink / raw) To: Yuan Fu, Eli Zaretskii; +Cc: 71518 [-- Attachment #1: Type: text/plain, Size: 3029 bytes --] 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@gmail.com> > > Date: Wed, 12 Jun 2024 23:51:21 -0700 > > Cc: 71518@debbugs.gnu.org, > > > > Bug Report Emacs <bug-gnu-emacs@gnu.org>, > > Eli Zaretskii <eliz@gnu.org> > > > > > On Jun 12, 2024, at 6:53 AM, Vincenzo Pupillo <vincenzo.pupillo@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 [-- Attachment #2: 0001-Fix-for-grammar-change-of-keyword-virtual-in-tree-si.patch --] [-- Type: text/x-patch, Size: 1446 bytes --] From 84c0c0c821b82d59874996cb7bb78e8205fa1377 Mon Sep 17 00:00:00 2001 From: Vincenzo Pupillo <v.pupillo@gmail.com> Date: Sat, 22 Jun 2024 16:22:16 +0200 Subject: [PATCH] Fix for grammar change of keyword "virtual" in tree-sitter-cpp * lisp/progmodes/c-ts-mode.el (c-ts-mode--keywords): Removed the keyword "virtual". * lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings): New font lock rule. --- lisp/progmodes/c-ts-mode.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index f453392ff7f..7bfb84baecb 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -572,7 +572,7 @@ c-ts-mode--keywords "not" "not_eq" "operator" "or" "or_eq" "override" "private" "protected" "public" "requires" "template" "throw" - "try" "typename" "using" "virtual" + "try" "typename" "using" "xor" "xor_eq")) (append '("auto") c-keywords)))) @@ -632,7 +632,8 @@ c-ts-mode--font-lock-settings :language mode :feature 'keyword - `([,@(c-ts-mode--keywords mode)] @font-lock-keyword-face + `((virtual) @font-lock-keyword-face + [,@(c-ts-mode--keywords mode)] @font-lock-keyword-face ,@(when (eq mode 'cpp) '((auto) @font-lock-keyword-face (this) @font-lock-keyword-face))) -- 2.45.2 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 14:42 ` Vincenzo Pupillo @ 2024-06-22 15:57 ` Eli Zaretskii 2024-06-22 16:14 ` Vincenzo Pupillo 0 siblings, 1 reply; 16+ messages in thread From: Eli Zaretskii @ 2024-06-22 15:57 UTC (permalink / raw) To: Vincenzo Pupillo; +Cc: 71518, casouri > From: Vincenzo Pupillo <v.pupillo@gmail.com> > Cc: 71518@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? ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 15:57 ` Eli Zaretskii @ 2024-06-22 16:14 ` Vincenzo Pupillo 2024-06-22 16:56 ` Eli Zaretskii 0 siblings, 1 reply; 16+ messages in thread From: Vincenzo Pupillo @ 2024-06-22 16:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 71518, casouri [-- Attachment #1: Type: text/plain, Size: 685 bytes --] In data sabato 22 giugno 2024 17:57:21 CEST, Eli Zaretskii ha scritto: > > From: Vincenzo Pupillo <v.pupillo@gmail.com> > > Cc: 71518@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 [-- Attachment #2: 0001-Fix-for-grammar-change-of-keyword-virtual-in-tree-si.patch --] [-- Type: text/x-patch, Size: 1541 bytes --] From 5f88ff0001e8c4edb7519d1a85ebb13390d1a285 Mon Sep 17 00:00:00 2001 From: Vincenzo Pupillo <v.pupillo@gmail.com> Date: Sat, 22 Jun 2024 16:22:16 +0200 Subject: [PATCH] Fix for grammar change of keyword "virtual" in tree-sitter-cpp The new rule works with both the new (>= 0.22.1) and the old (<= 0.22.0) grammar. * lisp/progmodes/c-ts-mode.el (c-ts-mode--keywords): Removed the keyword "virtual". * lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings): New font lock rule. (Bug#71518) --- lisp/progmodes/c-ts-mode.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index f453392ff7f..7bfb84baecb 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -572,7 +572,7 @@ c-ts-mode--keywords "not" "not_eq" "operator" "or" "or_eq" "override" "private" "protected" "public" "requires" "template" "throw" - "try" "typename" "using" "virtual" + "try" "typename" "using" "xor" "xor_eq")) (append '("auto") c-keywords)))) @@ -632,7 +632,8 @@ c-ts-mode--font-lock-settings :language mode :feature 'keyword - `([,@(c-ts-mode--keywords mode)] @font-lock-keyword-face + `((virtual) @font-lock-keyword-face + [,@(c-ts-mode--keywords mode)] @font-lock-keyword-face ,@(when (eq mode 'cpp) '((auto) @font-lock-keyword-face (this) @font-lock-keyword-face))) -- 2.45.2 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 16:14 ` Vincenzo Pupillo @ 2024-06-22 16:56 ` Eli Zaretskii 2024-06-22 17:03 ` Eli Zaretskii 0 siblings, 1 reply; 16+ messages in thread From: Eli Zaretskii @ 2024-06-22 16:56 UTC (permalink / raw) To: Vincenzo Pupillo; +Cc: 71518, casouri > From: Vincenzo Pupillo <v.pupillo@gmail.com> > Cc: casouri@gmail.com, 71518@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. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 16:56 ` Eli Zaretskii @ 2024-06-22 17:03 ` Eli Zaretskii 2024-06-22 17:59 ` Vincenzo Pupillo 0 siblings, 1 reply; 16+ messages in thread From: Eli Zaretskii @ 2024-06-22 17:03 UTC (permalink / raw) To: v.pupillo; +Cc: 71518, casouri > Cc: 71518@debbugs.gnu.org, casouri@gmail.com > Date: Sat, 22 Jun 2024 19:56:34 +0300 > From: Eli Zaretskii <eliz@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. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 17:03 ` Eli Zaretskii @ 2024-06-22 17:59 ` Vincenzo Pupillo 2024-06-22 18:15 ` Eli Zaretskii 2024-06-22 18:15 ` Vincenzo Pupillo 0 siblings, 2 replies; 16+ messages in thread From: Vincenzo Pupillo @ 2024-06-22 17:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 71518, casouri [-- Attachment #1: Type: text/plain, Size: 1318 bytes --] In data sabato 22 giugno 2024 19:03:43 CEST, Eli Zaretskii ha scritto: > > Cc: 71518@debbugs.gnu.org, casouri@gmail.com > > Date: Sat, 22 Jun 2024 19:56:34 +0300 > > From: Eli Zaretskii <eliz@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 [-- Attachment #2: 0001-Fix-for-grammar-change-of-keyword-virtual-in-tree-si.patch --] [-- Type: text/x-patch, Size: 1533 bytes --] From f518a28117c0418dc11bc4d9312df6609272813b Mon Sep 17 00:00:00 2001 From: Vincenzo Pupillo <v.pupillo@gmail.com> Date: Sat, 22 Jun 2024 16:22:16 +0200 Subject: [PATCH] Fix for grammar change of keyword "virtual" in tree-sitter-cpp The new rule works with both the new (>= 0.22.1) and the old (<= 0.22.0) grammar. * lisp/progmodes/c-ts-mode.el (c-ts-mode--keywords): Removed the keyword "virtual". * lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings): New font lock rule. (Bug#71518) --- lisp/progmodes/c-ts-mode.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index f453392ff7f..e7f74fc53f2 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -572,7 +572,7 @@ c-ts-mode--keywords "not" "not_eq" "operator" "or" "or_eq" "override" "private" "protected" "public" "requires" "template" "throw" - "try" "typename" "using" "virtual" + "try" "typename" "using" "xor" "xor_eq")) (append '("auto") c-keywords)))) @@ -635,7 +635,8 @@ c-ts-mode--font-lock-settings `([,@(c-ts-mode--keywords mode)] @font-lock-keyword-face ,@(when (eq mode 'cpp) '((auto) @font-lock-keyword-face - (this) @font-lock-keyword-face))) + (this) @font-lock-keyword-face + (virtual) @font-lock-keyword-face))) :language mode :feature 'operator -- 2.45.2 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 17:59 ` Vincenzo Pupillo @ 2024-06-22 18:15 ` Eli Zaretskii 2024-06-22 18:15 ` Vincenzo Pupillo 1 sibling, 0 replies; 16+ messages in thread From: Eli Zaretskii @ 2024-06-22 18:15 UTC (permalink / raw) To: Vincenzo Pupillo; +Cc: casouri, 71518-done > From: Vincenzo Pupillo <v.pupillo@gmail.com> > Cc: 71518@debbugs.gnu.org, casouri@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@debbugs.gnu.org, casouri@gmail.com > > > Date: Sat, 22 Jun 2024 19:56:34 +0300 > > > From: Eli Zaretskii <eliz@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. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 17:59 ` Vincenzo Pupillo 2024-06-22 18:15 ` Eli Zaretskii @ 2024-06-22 18:15 ` Vincenzo Pupillo 2024-06-22 18:19 ` Eli Zaretskii 1 sibling, 1 reply; 16+ messages in thread From: Vincenzo Pupillo @ 2024-06-22 18:15 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 71518, casouri 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@debbugs.gnu.org, casouri@gmail.com > > > Date: Sat, 22 Jun 2024 19:56:34 +0300 > > > From: Eli Zaretskii <eliz@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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 18:15 ` Vincenzo Pupillo @ 2024-06-22 18:19 ` Eli Zaretskii 2024-06-22 23:18 ` Yuan Fu 0 siblings, 1 reply; 16+ messages in thread From: Eli Zaretskii @ 2024-06-22 18:19 UTC (permalink / raw) To: Vincenzo Pupillo; +Cc: 71518, casouri > From: Vincenzo Pupillo <v.pupillo@gmail.com> > Cc: 71518@debbugs.gnu.org, casouri@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. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode 2024-06-22 18:19 ` Eli Zaretskii @ 2024-06-22 23:18 ` Yuan Fu 0 siblings, 0 replies; 16+ messages in thread From: Yuan Fu @ 2024-06-22 23:18 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 71518, Vincenzo Pupillo > On Jun 22, 2024, at 11:19 AM, Eli Zaretskii <eliz@gnu.org> wrote: > >> From: Vincenzo Pupillo <v.pupillo@gmail.com> >> Cc: 71518@debbugs.gnu.org, casouri@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 ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-06-22 23:18 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-12 12:33 bug#71518: 30.0.50; Errors during redisplay with c++-ts-mode Eli Zaretskii 2024-06-12 13:53 ` Vincenzo Pupillo 2024-06-13 6:51 ` Yuan Fu 2024-06-13 8:24 ` Eli Zaretskii 2024-06-13 8:57 ` Vincenzo Pupillo 2024-06-22 8:26 ` Eli Zaretskii 2024-06-22 14:42 ` Vincenzo Pupillo 2024-06-22 15:57 ` Eli Zaretskii 2024-06-22 16:14 ` Vincenzo Pupillo 2024-06-22 16:56 ` Eli Zaretskii 2024-06-22 17:03 ` Eli Zaretskii 2024-06-22 17:59 ` Vincenzo Pupillo 2024-06-22 18:15 ` Eli Zaretskii 2024-06-22 18:15 ` Vincenzo Pupillo 2024-06-22 18:19 ` Eli Zaretskii 2024-06-22 23:18 ` Yuan Fu
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.