diff --git a/lua/lazyvim/util/lsp.lua b/lua/lazyvim/util/lsp.lua index e14a5e13..1ccc7544 100644 --- a/lua/lazyvim/util/lsp.lua +++ b/lua/lazyvim/util/lsp.lua @@ -43,12 +43,13 @@ function M.setup() ---@diagnostic disable-next-line: no-unknown local ret = register_capability(err, res, ctx) local client = vim.lsp.get_client_by_id(ctx.client_id) - local buffer = vim.api.nvim_get_current_buf() if client then - vim.api.nvim_exec_autocmds("User", { - pattern = "LspDynamicCapability", - data = { client_id = client.id, buffer = buffer }, - }) + for buffer in ipairs(client.attached_buffers) do + vim.api.nvim_exec_autocmds("User", { + pattern = "LspDynamicCapability", + data = { client_id = client.id, buffer = buffer }, + }) + end end return ret end @@ -58,6 +59,18 @@ end ---@param client vim.lsp.Client function M._check_methods(client, buffer) + -- don't trigger on invalid buffers + if not vim.api.nvim_buf_is_valid(buffer) then + return + end + -- don't trigger on non-listed buffers + if not vim.bo[buffer].buflisted then + return + end + -- don't trigger on nofile buffers + if vim.bo[buffer].buftype == "nofile" then + return + end for method, clients in pairs(M._supports_method) do clients[client] = clients[client] or {} if not clients[client][buffer] then