Showing content from https://lists.gnu.org/archive/html/emacs-devel/2022-11/msg00864.html below:
Re: Tree sitter support for C-like languages
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] From: Yuan Fu Subject: Re: Tree sitter support for C-like languages Date: Mon, 14 Nov 2022 13:57:46 -0800
> On Nov 14, 2022, at 12:10 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Mon, 14 Nov 2022 11:51:59 -0800
>> Cc: monnier@iro.umontreal.ca,
>> theo@thornhill.no,
>> emacs-devel@gnu.org
>>
>>>> Well we update the parse tree and re-parse, but we currently donât update
>>>> the nodes created from the old tree. Keeping all nodes updated requires us
>>>> to track all live nodes and update them whenever the buffer is edited.
>>>
>>> I guess I still don't understand what exactly do you mean by "update
>>> the node". Can you explain that in more detail?
>>
>> My bad. So when buffer changes (insert in X, delete from X to Y), we inform
>> tree-sitter of this change by âupdatingâ the tree:
>>
>> const TSInputEdit edit =
>> treesit_prepare_input_edit (start_byte, old_end_byte, new_end_byte);
>>
>> ts_tree_edit (tree, &edit);
>>
>> Then when we re-parse, tree-sitter knows which part of the buffer has
>> changed and needs to be re-parsed, and only parses those, hence âincremental
>> parsingâ.
>>
>> Tree-sitter nodes needs similar updates, so that it is in sync with the
>> buffer text.
>
> Doesn't the call to ts_tree_edit update those nodes?
No.
> That is, aren't
> those nodes a part of the tree that gets updated by the ts_tree_edit
> call?
The node stores some information in itself (start_byte, end_byte, inlined data,
etc), and references the tree for the rest. The information it stores needs to
be updated separately.
Yuan
- Re: Tree sitter support for C-like languages, (continued)
- Re: Tree sitter support for C-like languages, Dmitry Gutov, 2022/11/14
- Re: Tree sitter support for C-like languages, Yuan Fu, 2022/11/13
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/14
- Re: Tree sitter support for C-like languages, Stefan Monnier, 2022/11/14
- Re: Tree sitter support for C-like languages, Yuan Fu, 2022/11/14
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/14
- Re: Tree sitter support for C-like languages, Yuan Fu, 2022/11/14
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/14
- Re: Tree sitter support for C-like languages, Yuan Fu, 2022/11/14
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/14
- Re: Tree sitter support for C-like languages, Yuan Fu <=
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/14
- Re: Tree sitter support for C-like languages, Yuan Fu, 2022/11/15
- Re: Tree sitter support for C-like languages, Theodor Thornhill, 2022/11/15
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/15
- Re: Tree sitter support for C-like languages, Stefan Monnier, 2022/11/15
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/15
- Re: Tree sitter support for C-like languages, Yuan Fu, 2022/11/15
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/15
- Re: Tree sitter support for C-like languages, Yuan Fu, 2022/11/16
- Re: Tree sitter support for C-like languages, Eli Zaretskii, 2022/11/16
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4