From 1dfab4f50f03efb304ec8c996728bb5dc90962d6 Mon Sep 17 00:00:00 2001 From: Michael Lingelbach Date: Sun, 28 Mar 2021 01:27:27 -0700 Subject: Add stop, start, and restart commands --- lua/lspconfig.lua | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'lua') diff --git a/lua/lspconfig.lua b/lua/lspconfig.lua index 462b4ddb..4c9fbda4 100644 --- a/lua/lspconfig.lua +++ b/lua/lspconfig.lua @@ -19,9 +19,46 @@ function M._root._setup() function() lspinfo() end; - "-nargs=?"; + "-nargs=0"; description = '`:LspInfo` Displays attached, active, and configured language servers'; }; + LspStart = { + function(server_name) + require('lspconfig')[server_name].autostart() + end; + "-nargs=1 -complete=custom,v:lua.lsp_complete_configured_servers"; + description = '`:LspStart` Manually launches a language server.'; + }; + LspStop = { + function(client_id) + if not client_id then + vim.lsp.stop_client(vim.lsp.get_active_clients()) + else + local client = vim.lsp.get_client_by_id(tonumber(client_id)) + if client then + client.stop() + end + end + end; + "-nargs=? -complete=customlist,v:lua.lsp_get_active_client_ids"; + description = '`:LspStop` Manually stops the given language client.'; + }; + LspRestart = { + function(client_id) + if client_id then + local client = vim.lsp.get_client_by_id(tonumber(client_id)) + if client then + local client_name = client.name + client.stop() + vim.defer_fn(function() + require('lspconfig')[client_name].autostart() + end, 500) + end + end + end; + "-nargs=? -complete=customlist,v:lua.lsp_get_active_client_ids"; + description = '`:LspRestart` Manually restart the given language client.'; + }; }; M.util.create_module_commands("_root", M._root.commands) -- cgit v1.2.3-70-g09d2