GNU bug report logs -
#60427
Emacs-29, c++-ts-mode: typing "char" into an empty buffer causes an exception in redisplay.
Previous Next
Full log
Message #29 received at 60427 <at> debbugs.gnu.org (full text, mbox):
> On Dec 31, 2022, at 2:29 AM, Alan Mackenzie <acm <at> muc.de> wrote:
>
> Hello, Yuan.
>
> On Fri, Dec 30, 2022 at 22:55:41 -0800, Yuan Fu wrote:
>
>
>>> On Dec 30, 2022, at 10:42 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:
>
>>>> Cc: 60427 <at> debbugs.gnu.org
>>>> From: Yuan Fu <casouri <at> gmail.com>
>>>> Date: Fri, 30 Dec 2022 17:02:36 -0800
>
>>>> Thank you! I couldn’t reproduce it on the latest trunk
>
>>> AFAIU, the report was about the emacs-29 branch, not about the master
>>> branch. So what did you mean by "latest trunk" above?
>
>> Sorry, imprecise wording, I mean latest emacs-29 :-)
>
> I've just downloaded the latest commits in the emacs-29 branch,
> bootstrapped, and I still see the problem, both in X GUI and on a Linux
> console. Just as a matter of interest, I get the error after typing the
> h in "char", so the problem would appear not to be related to the
> specific character string "char".
>
> As you mentioned, the backtrace now looks a bit different, namely:
>
> Error: treesit-query-error ("Node type error at" 195 "[\"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"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'")
> debug-early-backtrace()
> debug-early(error (treesit-query-error "Node type error at" 195 "[\"break\" \"case\" \"const\" \"continue\" \"default\" \"do\" \"else\" \"enum\" \"extern\" \"for\" \"goto\" \"if\" \"inline\" \"register\" \"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\" \"declty\pe\" \"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'"))
> treesit-font-lock-fontify-region(1 5 nil)
> font-lock-default-fontify-region(1 5 nil)
> font-lock-fontify-region(1 5)
> #f(compiled-function (fun) #<bytecode -0x156e29a3e4e81ac3>)(font-lock-fontify-region)
> jit-lock--run-functions(1 5)
> jit-lock-fontify-now(1 5)
> jit-lock-function(1)
> redisplay_internal\ \(C\ function\)()
>
>
> I forgot to give my configuration arguments, maybe that has something to
> do with it. They're:
>
> ./configure --with-gif=no --with-tiff=no --with-gpm --with-native-compilation
>
> ..
As Eli observed, this seems like a mismatch between the C++ language grammar you used and the queries used by c++-ts-mode. We need to pin down or declare the version of the language grammar a major mode is written on. Maybe in NEWS file?
Yuan
This bug report was last modified 2 years and 166 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.