Subject: Re: bug#73191: Acknowledgement (30.0.91; missing some keywords in c++-ts-mode)
From: Yuan Fu <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: Yang Yingchao <[email-masked]>, [email-masked]
Date: Sat, 14 Sep 2024 11:11:19 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

> On Sep 14, 2024, at 3:05 AM, Eli Zaretskii <[email-masked]> wrote:
> 
>> Date: Thu, 12 Sep 2024 14:40:26 +0800
>> From:  Yang Yingchao via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <[email-masked]>
>> 
>> On Thu, Sep 12 2024, GNU bug Tracking System wrote:
>> 
>> Update: `virtual` works fine, only `thread_local` is not highlighted...
> 
> Yuan,
> 
> Could you please look at this?
> 
> It sounds like we lack "thread_local" (and also "virtual"?) in
> c-ts-mode--keywords.  But when I tried to add them I found a more
> serious problem: with the current C++ grammar library I see the
> following messages in *Messages*:
> 
>  Error during redisplay: (jit-lock-function 1) signaled (treesit-query-error "Node type error at" 677 "[\"_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\" \"xor\" \"xor_eq\"] @font-lock-keyword-face (auto) @font-lock-keyword-face (this) @font-lock-keyword-face (virtual) @font-lock-keyword-face" "Debug the query with `treesit-query-validate'")
> 
> Could you please look at this and fix it ASAP, since this is affecting
> the release branch?
> 
> TIA

Yeah, sorry that I missed this report. And lol, tree-sitter-cpp changed “virtual” to (virtual) in May and then changed it back a few days ago.

I added “thread_local" keyword and added logic to use (virtual) or “virtual” depending on the grammar.

Yuan