From 70ea589d79f66ea29cfc20451a1a177652a24f27 Mon Sep 17 00:00:00 2001 From: Maria Solano Date: Mon, 10 Nov 2025 06:58:56 -0800 Subject: [PATCH] fix(lsp): deprecate `vim.lsp.get_buffers_by_client_id` (#36449) --- runtime/doc/deprecated.txt | 2 ++ runtime/doc/lsp.txt | 10 ---------- runtime/lua/vim/lsp.lua | 6 ++++++ runtime/lua/vim/lsp/_capability.lua | 3 ++- runtime/lua/vim/lsp/inlay_hint.lua | 2 +- runtime/lua/vim/lsp/semantic_tokens.lua | 2 +- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt index fcfb54ce57..0fc7de38dc 100644 --- a/runtime/doc/deprecated.txt +++ b/runtime/doc/deprecated.txt @@ -39,6 +39,8 @@ LSP • *vim.lsp.semantic_tokens.stop()* Use `vim.lsp.semantic_tokens.enable(false)` instead • *vim.lsp.set_log_level()* Use `vim.lsp.log.set_level()` instead • *vim.lsp.get_log_path()* Use `vim.lsp.log.get_filename()` instead +• *vim.lsp.get_buffers_by_client_id* Use `vim.lsp.get_client_by_id(id).attached_buffers` + instead LUA diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt index 2004d27652..15ada28947 100644 --- a/runtime/doc/lsp.txt +++ b/runtime/doc/lsp.txt @@ -1112,16 +1112,6 @@ formatexpr({opts}) *vim.lsp.formatexpr()* • {timeout_ms} (`integer`, default: 500ms) The timeout period for the formatting request.. - *vim.lsp.get_buffers_by_client_id()* -get_buffers_by_client_id({client_id}) - Returns list of buffers attached to client_id. - - Parameters: ~ - • {client_id} (`integer`) client id - - Return: ~ - (`integer[]`) buffers list of buffer ids - get_client_by_id({client_id}) *vim.lsp.get_client_by_id()* Gets a client by id, or nil if the id is invalid or the client was stopped. The returned client may not yet be fully initialized. diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua index ca3d14a974..97cf8c55c3 100644 --- a/runtime/lua/vim/lsp.lua +++ b/runtime/lua/vim/lsp.lua @@ -1033,9 +1033,15 @@ end --- Returns list of buffers attached to client_id. --- +---@deprecated ---@param client_id integer client id ---@return integer[] buffers list of buffer ids function lsp.get_buffers_by_client_id(client_id) + vim.deprecate( + 'vim.lsp.get_buffers_by_client_id()', + 'vim.lsp.get_client_by_id(id).attached_buffers', + '0.13' + ) local client = lsp.get_client_by_id(client_id) return client and vim.tbl_keys(client.attached_buffers) or {} end diff --git a/runtime/lua/vim/lsp/_capability.lua b/runtime/lua/vim/lsp/_capability.lua index 243ed6f24f..f12d1a38f6 100644 --- a/runtime/lua/vim/lsp/_capability.lua +++ b/runtime/lua/vim/lsp/_capability.lua @@ -133,7 +133,8 @@ function M.enable(name, enable, filter) for _, it_bufnr in ipairs( bufnr and { it_client.attached_buffers[bufnr] and bufnr } - or vim.lsp.get_buffers_by_client_id(it_client.id) + or vim.tbl_keys(it_client.attached_buffers) + or {} ) do if enable ~= M.is_enabled(name, { bufnr = it_bufnr, client_id = it_client.id }) then diff --git a/runtime/lua/vim/lsp/inlay_hint.lua b/runtime/lua/vim/lsp/inlay_hint.lua index 867055128e..a64cf5aa2a 100644 --- a/runtime/lua/vim/lsp/inlay_hint.lua +++ b/runtime/lua/vim/lsp/inlay_hint.lua @@ -117,7 +117,7 @@ function M.on_refresh(err, _, ctx) if err then return vim.NIL end - for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do + for bufnr in ipairs(vim.lsp.get_client_by_id(ctx.client_id).attached_buffers or {}) do for _, winid in ipairs(api.nvim_list_wins()) do if api.nvim_win_get_buf(winid) == bufnr then if bufstates[bufnr] and bufstates[bufnr].enabled then diff --git a/runtime/lua/vim/lsp/semantic_tokens.lua b/runtime/lua/vim/lsp/semantic_tokens.lua index 3bd703785a..bbb06bf059 100644 --- a/runtime/lua/vim/lsp/semantic_tokens.lua +++ b/runtime/lua/vim/lsp/semantic_tokens.lua @@ -822,7 +822,7 @@ function M._refresh(err, _, ctx) return vim.NIL end - for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do + for bufnr in ipairs(vim.lsp.get_client_by_id(ctx.client_id).attached_buffers or {}) do local highlighter = STHighlighter.active[bufnr] if highlighter and highlighter.client_state[ctx.client_id] then highlighter:mark_dirty(ctx.client_id)