aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/completion.lua
diff options
context:
space:
mode:
authorippachi <ippachi1018@gmail.com>2024-06-04 01:07:09 +0900
committerGitHub <noreply@github.com>2024-06-03 18:07:09 +0200
commit5aa9906676f3ad040b0ccb75eb5fd560def1e0ec (patch)
tree65c98b45abd124d95216038caaa2e2ca2c7c49e6 /runtime/lua/vim/lsp/completion.lua
parenta9c89bcbf69a3d0ef47f324a47ff6eb482467e70 (diff)
downloadrneovim-5aa9906676f3ad040b0ccb75eb5fd560def1e0ec.tar.gz
rneovim-5aa9906676f3ad040b0ccb75eb5fd560def1e0ec.tar.bz2
rneovim-5aa9906676f3ad040b0ccb75eb5fd560def1e0ec.zip
fix(lsp): use client.id instead of pairs index (#29143)
Problem: Completion side effects not working randomly. Solution: When creating the table of LSP responses, the table index was used, but this is not the same as the actual client_id, so it was changed to use the client_id directly.
Diffstat (limited to 'runtime/lua/vim/lsp/completion.lua')
-rw-r--r--runtime/lua/vim/lsp/completion.lua5
1 files changed, 3 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/completion.lua b/runtime/lua/vim/lsp/completion.lua
index f8e17ae2f0..c9326a0681 100644
--- a/runtime/lua/vim/lsp/completion.lua
+++ b/runtime/lua/vim/lsp/completion.lua
@@ -349,7 +349,7 @@ function M._convert_results(
return matches, server_start_boundary
end
---- @param clients table<integer, vim.lsp.Client>
+--- @param clients table<integer, vim.lsp.Client> # keys != client_id
--- @param bufnr integer
--- @param win integer
--- @param callback fun(responses: table<integer, { err: lsp.ResponseError, result: vim.lsp.CompletionResult }>)
@@ -359,7 +359,8 @@ local function request(clients, bufnr, win, callback)
local request_ids = {} --- @type table<integer, integer>
local remaining_requests = vim.tbl_count(clients)
- for client_id, client in pairs(clients) do
+ for _, client in pairs(clients) do
+ local client_id = client.id
local params = lsp.util.make_position_params(win, client.offset_encoding)
local ok, request_id = client.request(ms.textDocument_completion, params, function(err, result)
responses[client_id] = { err = err, result = result }