bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#59693: 29.0.50; treesitter in base buffer doesn't respond to modific


From: Eli Zaretskii
Subject: bug#59693: 29.0.50; treesitter in base buffer doesn't respond to modifications in indirect buffer correctly
Date: Fri, 02 Dec 2022 10:33:31 +0200

> From: Yuan Fu <casouri@gmail.com>
> Date: Thu, 1 Dec 2022 21:05:43 -0800
> Cc: miha@kamnitnik.top,
>  59693@debbugs.gnu.org
> 
> > In the insdel.c hooks where you record changes to buffer text, you should
> > see if the buffer has a base_buffer, and if so, update any parsers of the
> > base buffer as well.
> 
> Actually there’s a little bit of problem. When we edit the base buffer, we 
> would want to update the parsers in all of its indirect buffers as well, and 
> AFAICT there is no pointer from base buffer to the indirect buffer, only the 
> other way around. 

That's not the problem presented by the OP, though.

> We don’t want indirect buffer and base buffers to share parsers, since they 
> can have different narrowing, and semantically indirect buffers should share 
> anything but the text with the base buffer.

Yes, the parsers should not be shared.

> How about this: we change current_buffer->parser_list from a plain list of 
> parsers to a cons (PARSER-LIST . INDIRECT-PARSER-LIST), where PARSER-LIST is 
> as before. But for base buffers, INDIRECT-PARSER-LIST includes all the 
> parsers of its indirect buffers; and for indirect buffers, 
> INDIRECT-PARSER-LIST is nil.

You can maybe have the indirect buffers in the list, not their parsers.
That could make it easier to access other treesit-related information of the
indirect buffers, if needed.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]