diff options
-rw-r--r-- | runtime/lua/vim/lsp/completion.lua | 4 | ||||
-rw-r--r-- | test/functional/plugin/lsp/completion_spec.lua | 11 |
2 files changed, 12 insertions, 3 deletions
diff --git a/runtime/lua/vim/lsp/completion.lua b/runtime/lua/vim/lsp/completion.lua index d99b1ffd0d..1466dcf438 100644 --- a/runtime/lua/vim/lsp/completion.lua +++ b/runtime/lua/vim/lsp/completion.lua @@ -132,7 +132,7 @@ end --- @return string local function get_completion_word(item, prefix, match) if item.insertTextFormat == protocol.InsertTextFormat.Snippet then - if item.textEdit then + if item.textEdit or (item.insertText and item.insertText ~= '') then -- Use label instead of text if text has different starting characters. -- label is used as abbr (=displayed), but word is used for filtering -- This is required for things like postfix completion. @@ -154,8 +154,6 @@ local function get_completion_word(item, prefix, match) else return word end - elseif item.insertText and item.insertText ~= '' then - return parse_snippet(item.insertText) else return item.label end diff --git a/test/functional/plugin/lsp/completion_spec.lua b/test/functional/plugin/lsp/completion_spec.lua index d101e68273..c5fa411efe 100644 --- a/test/functional/plugin/lsp/completion_spec.lua +++ b/test/functional/plugin/lsp/completion_spec.lua @@ -562,6 +562,13 @@ 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 = { { @@ -569,6 +576,10 @@ describe('vim.lsp.completion: item conversion', function() word = 'copyOf', }, { + abbr = 'for .. ipairs', + word = 'for .. ipairs', + }, + { abbr = 'insert', word = 'insert', }, |