neovim

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

commit dff78f580dfae583023b20aa58e46e616607bdb6
parent afebbd0f34cacf6d39a1a158278489adb40ede45
Author: TheBlob42 <hessenmobbel@web.de>
Date:   Sun, 27 Jul 2025 21:19:01 +0200

fix(snippet): setting end_right_gravity (#35061)

When right_gravity is set to true for deactivating tabstop expansion we
have to set end_right_gravity to false to avoid expanding the tabstop
region on the right side. Vice versa for activating tabstop expansion
again.
Diffstat:
Mruntime/lua/vim/snippet.lua | 4++--
Mtest/functional/lua/snippet_spec.lua | 6+++++-
2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/runtime/lua/vim/snippet.lua b/runtime/lua/vim/snippet.lua @@ -119,7 +119,7 @@ local Tabstop = {} function Tabstop.new(index, bufnr, range, choices) local extmark_id = vim.api.nvim_buf_set_extmark(bufnr, snippet_ns, range[1], range[2], { right_gravity = true, - end_right_gravity = true, + end_right_gravity = false, end_line = range[3], end_col = range[4], hl_group = hl_group, @@ -170,7 +170,7 @@ function Tabstop:set_right_gravity(right_gravity) local range = self:get_range() self.extmark_id = vim.api.nvim_buf_set_extmark(self.bufnr, snippet_ns, range[1], range[2], { right_gravity = right_gravity, - end_right_gravity = true, + end_right_gravity = not right_gravity, end_line = range[3], end_col = range[4], hl_group = hl_group, diff --git a/test/functional/lua/snippet_spec.lua b/test/functional/lua/snippet_spec.lua @@ -249,7 +249,11 @@ describe('vim.snippet', function() feed('<Tab>') poke_eventloop() feed(',2') - eq({ 'for i=1,10,2 do', '\t', 'end' }, buf_lines(0)) + -- Make sure changes on previous tabstops does not change following ones + feed('<S-Tab>') + poke_eventloop() + feed('20') + eq({ 'for i=1,20,2 do', '\t', 'end' }, buf_lines(0)) end) it('updates snippet state when built-in completion menu is visible', function()