neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit baabc3598745889b69c9c63934e83cad1df8fa31
parent a59b052857ca43997b9e8be0a1d5c870ce172807
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Thu, 22 May 2025 12:11:28 -0700

fix(treesitter): properly clip nested injections

Diffstat:
Mruntime/lua/vim/treesitter/languagetree.lua | 2+-
Mtest/functional/treesitter/parser_spec.lua | 29+++++++++++++++++++++++++++++
2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua @@ -897,7 +897,7 @@ local function clip_regions(region1, region2) end -- Advance the range that ends earlier - if Range.cmp_pos.le(r1[3], r1[4], r2[3], r2[4]) then + if Range.cmp_pos.le(r1[4], r1[5], r2[4], r2[5]) then i = i + 1 else j = j + 1 diff --git a/test/functional/treesitter/parser_spec.lua b/test/functional/treesitter/parser_spec.lua @@ -854,6 +854,35 @@ int x = INT_MAX; end) end) + it('properly clips nested injections #34098', function() + insert([=[ + ```lua + vim.cmd([[ + set noswapfile + set noswapfile + set noswapfile + ]]) + ``` + ]=]) + + local result = exec_lua(function() + local parser = vim.treesitter.get_parser(0, 'markdown') + parser:parse(true) + + return parser._children.lua._children.vim:included_regions() + end) + + local expected = { + { + { 1, 10, 17, 2, 0, 18 }, + { 2, 0, 18, 3, 0, 33 }, + { 3, 0, 33, 4, 0, 48 }, + { 4, 0, 48, 5, 0, 63 }, + }, + } + eq(expected, result) + end) + describe('when getting the language for a range', function() before_each(function() insert([[