mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +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
	 Konrad Malik
					Konrad Malik