refactor(lsp): simplify client tracking

- Remove:
    - uninitialized_clients
    - active_clients
    - all_buffer_active_clients
- Add:
    - all_clients

- Use `lsp.get_clients()` to get buffer clients.
This commit is contained in:
Lewis Russell
2024-03-21 15:15:20 +00:00
committed by Lewis Russell
parent 7e38630874
commit 00e71d3da3
5 changed files with 176 additions and 213 deletions

View File

@@ -282,8 +282,7 @@ describe('LSP', function()
local client --- @type vim.lsp.Client
test_rpc_server {
test_name = 'basic_finish',
on_init = function(_client)
client = _client
on_setup = function()
exec_lua [[
BUFFER = vim.api.nvim_create_buf(false, true)
]]
@@ -292,6 +291,9 @@ describe('LSP', function()
exec_lua [[
vim.api.nvim_command(BUFFER.."bwipeout")
]]
end,
on_init = function(_client)
client = _client
client.notify('finish')
end,
on_exit = function(code, signal)
@@ -806,14 +808,12 @@ describe('LSP', function()
BUFFER = vim.api.nvim_get_current_buf()
lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID)
vim.lsp.handlers['textDocument/typeDefinition'] = function() end
vim.cmd(BUFFER.."bwipeout")
]=])
end,
on_init = function(client)
client.stop()
exec_lua('vim.lsp.buf.type_definition()')
exec_lua [[
vim.api.nvim_command(BUFFER.."bwipeout")
]]
end,
on_exit = function(code, signal)
eq(0, code, 'exit code')
@@ -1058,21 +1058,21 @@ describe('LSP', function()
local client --- @type vim.lsp.Client
test_rpc_server {
test_name = 'basic_finish',
on_init = function(_client)
client = _client
on_setup = function()
exec_lua [[
BUFFER = vim.api.nvim_create_buf(false, true)
vim.api.nvim_buf_set_lines(BUFFER, 0, -1, false, {
"testing";
"123";
})
assert(TEST_RPC_CLIENT_ID == 1)
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
assert(lsp.buf_is_attached(BUFFER, TEST_RPC_CLIENT_ID))
vim.cmd(BUFFER.."bwipeout")
]]
eq(1, exec_lua('return TEST_RPC_CLIENT_ID'))
eq(true, exec_lua('return lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID)'))
eq(true, exec_lua('return lsp.buf_is_attached(BUFFER, TEST_RPC_CLIENT_ID)'))
exec_lua [[
vim.api.nvim_command(BUFFER.."bwipeout")
]]
end,
on_init = function(_client)
client = _client
local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
eq(full_kind, client.server_capabilities().textDocumentSync.change)
eq(true, client.server_capabilities().textDocumentSync.openClose)