[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tree sitter support for C-like languages
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