GNU bug report logs - #60427
Emacs-29, c++-ts-mode: typing "char" into an empty buffer causes an exception in redisplay.

Previous Next

Package: emacs;

Reported by: Alan Mackenzie <acm <at> muc.de>

Date: Fri, 30 Dec 2022 12:25:01 UTC

Severity: normal

Full log


View this message in rfc822 format

From: Yuan Fu <casouri <at> gmail.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 60427 <at> debbugs.gnu.org
Subject: bug#60427: Emacs-29, c++-ts-mode: typing "char" into an empty buffer causes an exception in redisplay.
Date: Sat, 31 Dec 2022 14:11:03 -0800

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