[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.
bug#59693: 29.0.50; treesitter in base buffer doesn't respond to modifications in indirect buffer correctly, Stefan Monnier, 2022/12/04