fix(lsp): unify get_completion_word for textEdits/insertText

Problem:

After https://github.com/neovim/neovim/pull/32377 selecting snippets
provided by luals inserted the multi-line text before accepting the
candidates. That's inconsistent with servers who provide `textEdit`
instead of `insertText` and having lines shift up/down while cycling
through the completion candidates is a bit irritating.

Solution:

Use the logic used for `textEdit` snippets also for `insertText`
This commit is contained in:
Mathias Fussenegger
2025-02-21 18:37:05 +01:00
committed by Mathias Fußenegger
parent db2c3d1143
commit 8d7eb03040
2 changed files with 12 additions and 3 deletions

View File

@@ -562,12 +562,23 @@ describe('vim.lsp.completion: item conversion', function()
range = range0,
},
},
-- luals for snippet
{
insertText = 'for ${1:index}, ${2:value} in ipairs(${3:t}) do\n\t$0\nend',
insertTextFormat = 2,
kind = 15,
label = 'for .. ipairs',
},
}
local expected = {
{
abbr = 'copyOf(Collection<? extends E> coll) : List<E>',
word = 'copyOf',
},
{
abbr = 'for .. ipairs',
word = 'for .. ipairs',
},
{
abbr = 'insert',
word = 'insert',