GNU bug report logs -
#62333
30.0.50; Issue with tree-sitter syntax tree during certain changes
Previous Next
Full log
Message #8 received at 62333 <at> debbugs.gnu.org (full text, mbox):
On 21/03/2023 16:00, Wilhelm Kirschbaum wrote:
>
> With the following text in a buffer with elixir-ts-mode:
>
> def foo() do
> end
>
> When I delete the `)` and re-insert it, the tree-sitter syntax tree does
> not fully recover and the `do end` part is absent when observing using
> treesit-explore-mode.
>
> Before removing the `)`:
>
> (source
> (call target: (identifier)
> (arguments
> (call target: (identifier)
> (arguments ( ))))
> (do_block do end)))
>
> after re-inserting `)`:
>
> (source
> (call target: (identifier)
> (arguments
> (call target: (identifier)
> (arguments ( ))))))
>
> I can see the same behaviour using ruby-ts-mode when I remove the
> following expression:
>
> (setq-local syntax-propertize-function #'ruby-ts--syntax-propertize)
>
> The ruby syntax I tested with:
>
> def foo()
> end
>
> When I add a local `syntax-propertize-function' function to elixir-ts-mode
> it also solves the problem of not fully recovering the tree-sitter
> syntax tree. It does not seem to matter what the function achieves
> thought, so am a bit confused.
I can repro both scenarios. Except with ruby-ts-mode, the difference in
printed AST is the added wrapping in (program ...). But the visible
result is similar: "end" not being highlighted.
This bug report was last modified 2 years and 77 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.