mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
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.
This commit is contained in:
@@ -119,7 +119,7 @@ local Tabstop = {}
|
|||||||
function Tabstop.new(index, bufnr, range, choices)
|
function Tabstop.new(index, bufnr, range, choices)
|
||||||
local extmark_id = vim.api.nvim_buf_set_extmark(bufnr, snippet_ns, range[1], range[2], {
|
local extmark_id = vim.api.nvim_buf_set_extmark(bufnr, snippet_ns, range[1], range[2], {
|
||||||
right_gravity = true,
|
right_gravity = true,
|
||||||
end_right_gravity = true,
|
end_right_gravity = false,
|
||||||
end_line = range[3],
|
end_line = range[3],
|
||||||
end_col = range[4],
|
end_col = range[4],
|
||||||
hl_group = hl_group,
|
hl_group = hl_group,
|
||||||
@@ -170,7 +170,7 @@ function Tabstop:set_right_gravity(right_gravity)
|
|||||||
local range = self:get_range()
|
local range = self:get_range()
|
||||||
self.extmark_id = vim.api.nvim_buf_set_extmark(self.bufnr, snippet_ns, range[1], range[2], {
|
self.extmark_id = vim.api.nvim_buf_set_extmark(self.bufnr, snippet_ns, range[1], range[2], {
|
||||||
right_gravity = right_gravity,
|
right_gravity = right_gravity,
|
||||||
end_right_gravity = true,
|
end_right_gravity = not right_gravity,
|
||||||
end_line = range[3],
|
end_line = range[3],
|
||||||
end_col = range[4],
|
end_col = range[4],
|
||||||
hl_group = hl_group,
|
hl_group = hl_group,
|
||||||
|
@@ -249,7 +249,11 @@ describe('vim.snippet', function()
|
|||||||
feed('<Tab>')
|
feed('<Tab>')
|
||||||
poke_eventloop()
|
poke_eventloop()
|
||||||
feed(',2')
|
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)
|
end)
|
||||||
|
|
||||||
it('updates snippet state when built-in completion menu is visible', function()
|
it('updates snippet state when built-in completion menu is visible', function()
|
||||||
|
Reference in New Issue
Block a user