commit eaacdc9bdffd98fff6ec788b5526a9c80d16f2cf
parent 9c8d06e08608e9fb916473cba1af65b58609392e
Author: Tomasz N <przepompownia@users.noreply.github.com>
Date: Sun, 8 Feb 2026 22:25:47 +0100
fix(lsp): ignore empty response on trigger completion #37663
Problem:
Empty response affects server start boundary computed before.
Solution:
Ignore empty responses. This is mostly micro-optimization that avoids
extending existing results with empty responses.
Diffstat:
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/runtime/lua/vim/lsp/completion.lua b/runtime/lua/vim/lsp/completion.lua
@@ -583,7 +583,7 @@ local function trigger(bufnr, clients, ctx)
end
local result = response.result
- if result then
+ if result and #result.items > 0 then
Context.isIncomplete = Context.isIncomplete or result.isIncomplete
local encoding = client and client.offset_encoding or 'utf-16'
local client_matches, tmp_server_start_boundary
diff --git a/test/functional/plugin/lsp/completion_spec.lua b/test/functional/plugin/lsp/completion_spec.lua
@@ -1455,6 +1455,7 @@ describe('vim.lsp.completion: integration', function()
end)
create_server('dummy', completion_list)
create_server('dummy2', completion_list2)
+ create_server('dummy3', { isIncomplete = false, items = {} })
feed('Adiv.foo<C-x><C-O>')
retry(nil, nil, function()
eq(