aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lua/lspconfig/configs.lua4
-rw-r--r--plugin/lspconfig.lua9
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