aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/lua/vim/lsp/completion.lua4
-rw-r--r--test/functional/plugin/lsp/completion_spec.lua11
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',
},