mirror of
https://github.com/neovim/neovim
synced 2025-07-17 17:51:48 +00:00
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.
This commit is contained in:
@ -615,6 +615,12 @@ local function on_complete_done()
|
|||||||
end
|
end
|
||||||
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
|
--- @class vim.lsp.completion.BufferOpts
|
||||||
--- @field autotrigger? boolean Default: false When true, completion triggers automatically based on the server's `triggerCharacters`.
|
--- @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|.
|
--- @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.
|
-- Set up autocommands.
|
||||||
local group =
|
local group = api.nvim_create_augroup(get_augroup(bufnr), { clear = true })
|
||||||
api.nvim_create_augroup(string.format('nvim.lsp.completion_%d', bufnr), { clear = true })
|
|
||||||
api.nvim_create_autocmd('CompleteDone', {
|
api.nvim_create_autocmd('CompleteDone', {
|
||||||
group = group,
|
group = group,
|
||||||
buffer = bufnr,
|
buffer = bufnr,
|
||||||
@ -708,7 +713,7 @@ local function disable_completions(client_id, bufnr)
|
|||||||
handle.clients[client_id] = nil
|
handle.clients[client_id] = nil
|
||||||
if not next(handle.clients) then
|
if not next(handle.clients) then
|
||||||
buf_handles[bufnr] = nil
|
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
|
else
|
||||||
for char, clients in pairs(handle.triggers) do
|
for char, clients in pairs(handle.triggers) do
|
||||||
--- @param c vim.lsp.Client
|
--- @param c vim.lsp.Client
|
||||||
|
Reference in New Issue
Block a user