commit 3bf887f6e08fa272679187340ca483809275b20a
parent 1f0b2dc6cd8fbf650dfbfb3328de6e6284aec9e4
Author: Sooryakiran Ponnath <skp.frl@gmail.com>
Date: Tue, 20 Jun 2023 15:17:13 -0400
fix(lsp): always return boolean in lsp.buf_client_attach (#24077)
Co-authored-by: Mathias Fussenegger <f.mathias@zignar.net>
Diffstat:
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt
@@ -678,6 +678,10 @@ buf_attach_client({bufnr}, {client_id}) *vim.lsp.buf_attach_client()*
• {bufnr} (integer) Buffer handle, or 0 for current
• {client_id} (integer) Client id
+ Return: ~
+ (boolean) success `true` if client was attached successfully; `false`
+ otherwise
+
buf_detach_client({bufnr}, {client_id}) *vim.lsp.buf_detach_client()*
Detaches client from the specified buffer. Note: While the server is
notified that the text document (buffer) was closed, it is still able to
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua
@@ -1799,6 +1799,7 @@ end
---
---@param bufnr (integer) Buffer handle, or 0 for current
---@param client_id (integer) Client id
+---@return boolean success `true` if client was attached successfully; `false` otherwise
function lsp.buf_attach_client(bufnr, client_id)
validate({
bufnr = { bufnr, 'n', true },
@@ -1887,7 +1888,7 @@ function lsp.buf_attach_client(bufnr, client_id)
end
if buffer_client_ids[client_id] then
- return
+ return true
end
-- This is our first time attaching this client to this buffer.
buffer_client_ids[client_id] = true
diff --git a/test/functional/plugin/lsp_spec.lua b/test/functional/plugin/lsp_spec.lua
@@ -1070,7 +1070,7 @@ describe('LSP', function()
eq(full_kind, client.server_capabilities().textDocumentSync.change)
eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
- assert(not lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID), "Shouldn't attach twice")
+ assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID), "Already attached, returns true")
]]
end;
on_exit = function(code, signal)