GNU bug report logs - #62951
29.0.90; c-ts-mode: Incorrect fontification due to FOR_EACH_TAIL_SAFE

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Wed, 19 Apr 2023 16:41:01 UTC

Severity: normal

Found in version 29.0.90

Fixed in version 29.1

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #20 received at 62951 <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dmitry <at> gutov.dev>
To: Yuan Fu <casouri <at> gmail.com>, Eli Zaretskii <eliz <at> gnu.org>
Cc: 62951 <at> debbugs.gnu.org
Subject: Re: bug#62951: 29.0.90; c-ts-mode: Incorrect fontification due to
 FOR_EACH_TAIL_SAFE
Date: Mon, 24 Apr 2023 00:04:02 +0300
On 23/04/2023 03:28, Yuan Fu wrote:
> What do you think of extending the parser to support these macros instead? (So we fork tree-sitter-c.) If we can fix the parser, we don’t need to retrofit hacks onto font-lock, indent, etc, separately, and it truly fixes the problem. The downside is compiling from grammar source to grammar.c needs rust and node tools. But I guess depending on the grammar maintained by tree-sitter’s author isn’t too much different from depending on the grammar maintained by another individual (ie, me)?

We had also talked at some point about replacing the actual text that 
the parser sees with something else.

If this can be done in a straightforward way (with tracking the 
subsequent correspondence of "real" text back to the buffer for syntax 
highlighting), that might be the perfect solution: we'd have a defcustom 
which would hold a list of macros used in the current codebase in the 
form of templates, and we'd set a bunch of them in emacs/.dir-locals.el.

I'm not sure how difficult this is to implement and maintain, but it's 
probably going to be less work to maintain than a fork of the grammar.




This bug report was last modified 2 years and 26 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.