diff options
| -rw-r--r-- | lua/lspconfig/configs.lua | 4 | ||||
| -rw-r--r-- | plugin/lspconfig.lua | 9 |
2 files changed, 8 insertions, 5 deletions
diff --git a/lua/lspconfig/configs.lua b/lua/lspconfig/configs.lua index e4d1c051..e74570f1 100644 --- a/lua/lspconfig/configs.lua +++ b/lua/lspconfig/configs.lua @@ -116,8 +116,8 @@ function configs.__newindex(t, config_name, config_def) local get_root_dir = config.root_dir - function M.launch() - local bufnr = api.nvim_get_current_buf() + function M.launch(bufnr) + bufnr = bufnr or api.nvim_get_current_buf() local bufname = api.nvim_buf_get_name(bufnr) if (#bufname == 0 and not config.single_file_support) or (#bufname ~= 0 and not util.bufname_valid(bufname)) then return diff --git a/plugin/lspconfig.lua b/plugin/lspconfig.lua index 5afd0895..b2e41461 100644 --- a/plugin/lspconfig.lua +++ b/plugin/lspconfig.lua @@ -91,7 +91,7 @@ api.nvim_create_user_command('LspRestart', function(info) for _, client in ipairs(get_clients_from_cmd_args(info.args)) do client.stop() if #client.attached_buffers > 0 then - detach_clients[client.name] = client + detach_clients[client.name] = { client, client.attached_buffers } end end local timer = vim.loop.new_timer() @@ -99,9 +99,12 @@ api.nvim_create_user_command('LspRestart', function(info) 500, 100, vim.schedule_wrap(function() - for client_name, client in pairs(detach_clients) do + for client_name, tuple in pairs(detach_clients) do + local client, attached_buffers = unpack(tuple) if client.is_stopped() then - require('lspconfig.configs')[client_name].launch() + for buf in pairs(attached_buffers) do + require('lspconfig.configs')[client_name].launch(buf) + end detach_clients[client_name] = nil end end |
