diff --git a/runtime/lua/vim/snippet.lua b/runtime/lua/vim/snippet.lua index 0d7dd6a034..4ef86af16d 100644 --- 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 index 33f2ef6222..57b58e68bb 100644 --- a/test/functional/lua/snippet_spec.lua +++ b/test/functional/lua/snippet_spec.lua @@ -249,7 +249,11 @@ describe('vim.snippet', function() feed('') 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('') + 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()