mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
runtime: Add vim.lsp.get_client_by_name (#11603)
Since the client name is more obvious than the client id for the user, add an API to get the lsp client by the client name.
This commit is contained in:
parent
4f4c06a7a4
commit
680693e263
@ -72,8 +72,9 @@ the option in an |after-directory| ftplugin, e.g. "after/ftplugin/python.vim".
|
||||
*lsp-core-api*
|
||||
These are the core api functions for working with clients. You will mainly be
|
||||
using |vim.lsp.start_client()| and |vim.lsp.buf_attach_client()| for operations
|
||||
and |vim.lsp.get_client_by_id()| to retrieve a client by its id after it has
|
||||
initialized (or {config.on_init}. see below)
|
||||
and |vim.lsp.get_client_by_id()| and |vim.lsp.get_client_by_name()| to retrieve
|
||||
a client by its id or name after it has initialized (or {config.on_init}. see
|
||||
below)
|
||||
|
||||
*vim.lsp.start_client()*
|
||||
|
||||
@ -265,6 +266,11 @@ vim.lsp.get_client_by_id({client_id})
|
||||
Look up an active client by its id, returns nil if it is not yet initialized
|
||||
or is not a valid id. Returns |lsp-client|
|
||||
|
||||
*vim.lsp.get_client_by_name()*
|
||||
vim.lsp.get_client_by_name({client_name})
|
||||
|
||||
Look up an active client by its name, returns nil if it is not yet initialized
|
||||
or is not a valid name. Returns |lsp-client|
|
||||
*vim.lsp.stop_client()*
|
||||
vim.lsp.stop_client({client_id}, [{force}])
|
||||
|
||||
|
@ -697,6 +697,16 @@ function lsp.get_client_by_id(client_id)
|
||||
return active_clients[client_id]
|
||||
end
|
||||
|
||||
-- Look up an active client by its name, returns nil if it is not yet initialized
|
||||
-- or is not a valid name.
|
||||
-- @param client_name string the client name.
|
||||
function lsp.get_client_by_name(client_name)
|
||||
for _, client in pairs(active_clients) do
|
||||
if client.name == client_name then return client end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Stop a client by its id, optionally with force.
|
||||
-- You can also use the `stop()` function on a client if you already have
|
||||
-- access to it.
|
||||
|
@ -111,6 +111,7 @@ describe('Language Client API', function()
|
||||
exec_lua([=[
|
||||
lsp = require('vim.lsp')
|
||||
local test_name, fixture_filename = ...
|
||||
TEST_NAME = test_name
|
||||
TEST_RPC_CLIENT_ID = lsp.start_client {
|
||||
cmd = {
|
||||
vim.api.nvim_get_vvar("progpath"), '-Es', '-u', 'NONE', '--headless',
|
||||
@ -118,6 +119,7 @@ describe('Language Client API', function()
|
||||
"-c", "luafile "..fixture_filename;
|
||||
};
|
||||
root_dir = vim.loop.cwd();
|
||||
name = test_name;
|
||||
}
|
||||
]=], test_name, lsp_test_rpc_server_file)
|
||||
end)
|
||||
@ -137,6 +139,7 @@ describe('Language Client API', function()
|
||||
end
|
||||
eq(1, exec_lua("return #lsp.get_active_clients()"))
|
||||
eq(false, exec_lua("return lsp.get_client_by_id(TEST_RPC_CLIENT_ID) == nil"))
|
||||
eq(false, exec_lua("return lsp.get_client_by_name(TEST_NAME) == nil"))
|
||||
eq(false, exec_lua("return lsp.get_client_by_id(TEST_RPC_CLIENT_ID).is_stopped()"))
|
||||
exec_lua("return lsp.get_client_by_id(TEST_RPC_CLIENT_ID).stop()")
|
||||
for _ = 1, 20 do
|
||||
@ -146,6 +149,7 @@ describe('Language Client API', function()
|
||||
end
|
||||
end
|
||||
eq(true, exec_lua("return lsp.get_client_by_id(TEST_RPC_CLIENT_ID) == nil"))
|
||||
eq(true, exec_lua("return lsp.get_client_by_name(TEST_NAME) == nil"))
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user