From 10ed3082a415b525628dfaebdcd007c7e96a5b87 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 23 May 2024 17:39:20 +0200 Subject: [PATCH] fix(lsp): use proper buffer for dynamic capabilities. Fixes #3246 --- lua/lazyvim/util/lsp.lua | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) 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