fix(snippet): jumping backwards to choice node (#35062)

Avoid duplicate text when jumping back to a choice node. Set cursor to
end of tabstop range and prioritize current choice in completion items.

(cherry picked from commit 628d569a59)
This commit is contained in:
TheBlob42
2025-07-27 22:10:00 +02:00
committed by github-actions[bot]
parent 2e4baa3679
commit 41fa343484
2 changed files with 30 additions and 1 deletions

View File

@@ -240,6 +240,23 @@ describe('vim.snippet', function()
eq({ 'public function foo() {', '\t', '}' }, buf_lines(0))
end)
it('does not change the chosen text when jumping back to a choice tabstop', function()
test_expand_success(
{ '${1|public,protected,private|} function ${2:name}() {', '\t$0', '}' },
{ ' function name() {', '\t', '}' }
)
wait_for_pum()
feed('<C-n><C-y><Tab>')
poke_eventloop()
feed('<S-Tab>')
poke_eventloop()
wait_for_pum()
feed('<Tab>')
poke_eventloop()
feed('foo')
eq({ 'protected function foo() {', '\t', '}' }, buf_lines(0))
end)
it('jumps through adjacent tabstops', function()
test_expand_success(
{ 'for i=1,${1:to}${2:,step} do\n\t$3\nend' },