aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Fussenegger <f.mathias@zignar.net>2025-01-19 21:49:02 +0100
committerMathias Fußenegger <mfussenegger@users.noreply.github.com>2025-01-19 22:11:20 +0100
commit5f527f24f0ea89e9071e065530cbed449507df5c (patch)
tree2639038c512f8ba40b7ab6fe7a51b499dd3fcc16
parentd56ba71af11c9048c9085e4f66a47947770bdb29 (diff)
downloadrneovim-5f527f24f0ea89e9071e065530cbed449507df5c.tar.gz
rneovim-5f527f24f0ea89e9071e065530cbed449507df5c.tar.bz2
rneovim-5f527f24f0ea89e9071e065530cbed449507df5c.zip
fix(lsp): don't use completion filterText if prefix is empty
Follow up to https://github.com/neovim/neovim/pull/32072 If there is no prefix (e.g. at the start of word boundary or a line), it always used the `filterText` because the `match` function always returned false.
-rw-r--r--runtime/lua/vim/lsp/completion.lua3
-rw-r--r--test/functional/plugin/lsp/completion_spec.lua11
2 files changed, 11 insertions, 3 deletions
diff --git a/runtime/lua/vim/lsp/completion.lua b/runtime/lua/vim/lsp/completion.lua
index 3c7d1f1469..9902c52c33 100644
--- a/runtime/lua/vim/lsp/completion.lua
+++ b/runtime/lua/vim/lsp/completion.lua
@@ -231,6 +231,9 @@ end
---@param prefix string
---@return boolean
local function match_item_by_value(value, prefix)
+ if prefix == '' then
+ return true
+ end
if vim.o.completeopt:find('fuzzy') ~= nil then
return next(vim.fn.matchfuzzy({ value }, prefix)) ~= nil
end
diff --git a/test/functional/plugin/lsp/completion_spec.lua b/test/functional/plugin/lsp/completion_spec.lua
index 84c8f5864a..4e90c2fd1b 100644
--- a/test/functional/plugin/lsp/completion_spec.lua
+++ b/test/functional/plugin/lsp/completion_spec.lua
@@ -239,13 +239,18 @@ describe('vim.lsp.completion: item conversion', function()
},
},
}
- local expected = {
+ assert_completion_matches('<mo', items, {
{
abbr = 'module',
word = '<module',
},
- }
- assert_completion_matches('<mo', items, expected)
+ })
+ assert_completion_matches('', items, {
+ {
+ abbr = 'module',
+ word = 'module',
+ },
+ })
end)
it('fuzzy matches on label when filterText is missing', function()