aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonrad Malik <konrad.malik@gmail.com>2025-01-20 15:10:00 +0100
committerGitHub <noreply@github.com>2025-01-20 06:10:00 -0800
commitded15ca8c210965442d39ab214d4838b80a3fdc6 (patch)
tree7677d698bdc608234abab8700552fca40ccd6b64
parent8a236c242a76825a6a9266feda45794c7328c807 (diff)
downloadrneovim-ded15ca8c210965442d39ab214d4838b80a3fdc6.tar.gz
rneovim-ded15ca8c210965442d39ab214d4838b80a3fdc6.tar.bz2
rneovim-ded15ca8c210965442d39ab214d4838b80a3fdc6.zip
fix: completion.enable(false,...) deletes invalid augroup #32121
Problem: vim.lsp.completion.enable(true, client.id, bufnr) vim.lsp.completion.enable(false, client.id, bufnr) Error detected while processing LspDetach Autocommands for "*": Error executing lua callback: …/lsp/completion.lua:701: Vim:E367: No such group: "vim/lsp/completion-22" stack traceback: [C]: in function 'nvim_del_augroup_by_name' …/lsp/completion.lua:701: in function 'disable_completions' …/lsp/completion.lua:724: in function 'enable' Solution: Delete the correct augroup.
-rw-r--r--runtime/lua/vim/lsp/completion.lua11
1 files changed, 8 insertions, 3 deletions
diff --git a/runtime/lua/vim/lsp/completion.lua b/runtime/lua/vim/lsp/completion.lua
index 9902c52c33..bdf31d8514 100644
--- a/runtime/lua/vim/lsp/completion.lua
+++ b/runtime/lua/vim/lsp/completion.lua
@@ -615,6 +615,12 @@ local function on_complete_done()
end
end
+---@param bufnr integer
+---@return string
+local function get_augroup(bufnr)
+ return string.format('nvim.lsp.completion_%d', bufnr)
+end
+
--- @class vim.lsp.completion.BufferOpts
--- @field autotrigger? boolean Default: false When true, completion triggers automatically based on the server's `triggerCharacters`.
--- @field convert? fun(item: lsp.CompletionItem): table Transforms an LSP CompletionItem to |complete-items|.
@@ -639,8 +645,7 @@ local function enable_completions(client_id, bufnr, opts)
})
-- Set up autocommands.
- local group =
- api.nvim_create_augroup(string.format('nvim.lsp.completion_%d', bufnr), { clear = true })
+ local group = api.nvim_create_augroup(get_augroup(bufnr), { clear = true })
api.nvim_create_autocmd('CompleteDone', {
group = group,
buffer = bufnr,
@@ -708,7 +713,7 @@ local function disable_completions(client_id, bufnr)
handle.clients[client_id] = nil
if not next(handle.clients) then
buf_handles[bufnr] = nil
- api.nvim_del_augroup_by_name(string.format('vim/lsp/completion-%d', bufnr))
+ api.nvim_del_augroup_by_name(get_augroup(bufnr))
else
for char, clients in pairs(handle.triggers) do
--- @param c vim.lsp.Client