Commit Graph

9 Commits

Author SHA1 Message Date
Dmytro Meleshko
fa365cedad perf(treesitter): reduce memory usage of _select.lua #40409
Problem:  The table `history` in treesitter/_select.lua stores references
          to previously selected TSNodes, but a TSNode needs to keep its
          whole TSTree alive in memory, which may be kept alive even
          after closing the buffer to which this history corresponds.

Solution: Store just the bits of information from the TSNode we need to
          go back in selection history (the range and ID), without
          referencing the TSNode itself.
(cherry picked from commit bcfc2037ef)
2026-06-25 16:35:51 +00:00
Dmytro Meleshko
2b37c26477 fix(treesitter): incremental selection causes beeps when the bell is enabled #40414
Problem:  The function visual_select() in treesitter/_select.lua is
          executing `:normal! v<Esc>` to ensure that `gv` later goes
          back to character Visual mode, but doing so when mode() is
          already `v` first switches back to the Normal mode, then
          executes <Esc>, which causes a beep.
Solution: Check if the mode() is already `v` and avoid any switching in
          that case.
(cherry picked from commit 9afa8477b3)
2026-06-25 16:02:45 +00:00
Justin M. Keyes
b46688feee backport feat(treesitter): expand selection to sibling node (#39323)
Problem:
Can't expand treesitter-incremental-selection to the next and previous
sibling nodes.

Solution:
Pressing `]N` in visual mode will expand the selection to the next
sibling node, and `[N` will do the same with the previous node.

Co-authored-by: altermo <107814000+altermo@users.noreply.github.com>
2026-04-22 21:40:12 +00:00
altermo
111c7f434e fix(treesitter): TSNode:id() with NUL byte causes unreliable select() #39134
Problem:
`TSNode:id()` returns the underlying c pointer as a string, which may include
NUL bytes. In PUC Lua, `('%s'):format('\0a\0')` returns `''` and not `'\0a\0'`
(i.e. treats the string as a c-string (which terminates at the NUL byte)).

This resulted in two different nodes being able to have the same id.

Solution:
Use concatenation `..` instead of `string.format()`.

(cherry picked from commit bb2284d75e)
2026-04-16 22:48:50 +00:00
altermo
9f16ad8ca3 fix(treesitter): select reset to "v" visualmode()
(cherry picked from commit facc21cc63)
2026-04-02 13:49:39 +00:00
altermo
2d9619fac7 fix(treesitter): select with node ending with unicode char (#38557)
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
(cherry picked from commit 1bcf2d7f90)
2026-03-31 05:28:17 +00:00
altermo
170ff4b244 refactor(treesitter): use same visual-select as lsp #38475
Problem
treesitter select over-complicates visual selection.

Solution
make it use same visual selection logic as lsp.
2026-03-25 05:20:42 -04:00
altermo
929be7ee00 refactor(treesitter): move range related functions 2026-03-14 12:25:14 +01:00
altermo
72d3a57f27 feat(treesitter): incremental selection
Co-authored-by: György Andorka <gyorgy.andorka@protonmail.com>
2026-03-08 11:07:49 +01:00