GNU bug report logs - #62333
30.0.50; Issue with tree-sitter syntax tree during certain changes

Previous Next

Package: emacs;

Reported by: Wilhelm Kirschbaum <wkirschbaum <at> gmail.com>

Date: Tue, 21 Mar 2023 14:15:01 UTC

Severity: normal

Found in version 30.0.50

Full log


View this message in rfc822 format

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Wilhelm Kirschbaum <wkirschbaum <at> gmail.com>, 62333 <at> debbugs.gnu.org
Cc: casouri <at> gmail.com
Subject: bug#62333: 30.0.50; Issue with tree-sitter syntax tree during certain changes
Date: Thu, 23 Mar 2023 03:03:00 +0200
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.