fix(treesitter): #trim! range for nodes ending at col 0 #31488

Problem:
char-wise folding for `#trim!` ranges are improperly calculated for nodes that
end at column 0, due to the way `get_node_text` works.

Solution:
Add the blank line that `get_node_text` removes for for nodes ending at column
0. Also properly set column positions when performing linewise trims.
This commit is contained in:
Riley Bruins
2024-12-07 03:01:59 -08:00
committed by GitHub
parent 5c245ec3e9
commit c63e49cce2
2 changed files with 40 additions and 4 deletions

View File

@@ -696,14 +696,14 @@ print()
end)
it('trims only empty lines by default (backwards compatible)', function()
insert [[
insert(dedent [[
## Heading
With some text
## And another
With some more]]
With some more here]])
local query_text = [[
; query
@@ -716,8 +716,35 @@ print()
end)
eq({
{ 'fold', { 0, 0, 3, 0 } },
{ 'fold', { 4, 0, 7, 0 } },
{ 'fold', { 0, 0, 2, 14 } },
{ 'fold', { 4, 0, 6, 19 } },
}, run_query('markdown', query_text))
end)
it('can trim lines', function()
insert(dedent [[
- Fold list
- Fold list
- Fold list
- Fold list
- Fold list
- Fold list
]])
local query_text = [[
; query
((list_item
(list)) @fold
(#trim! @fold 1 1 1 1))
]]
exec_lua(function()
vim.treesitter.start(0, 'markdown')
end)
eq({
{ 'fold', { 0, 0, 4, 13 } },
{ 'fold', { 1, 2, 3, 15 } },
}, run_query('markdown', query_text))
end)
end)