fix(lsp): check if client is stopping before reuse #33796

Problem:
Stopping a language server and then calling vim.lsp.start() with the same name/root will return the old language server that's in the middle of shutting down. vim.lsp.start() won't return a new server until the old process has terminated.

Solution:
Introducing a client._is_stopping field that tracks the shutdown phase, preventing the client from being reused.
This commit is contained in:
Eike
2025-05-04 23:38:01 +02:00
committed by GitHub
parent df345503eb
commit 0862c1036a
3 changed files with 26 additions and 5 deletions

View File

@ -148,7 +148,7 @@ end
--- @param config vim.lsp.ClientConfig
--- @return boolean
local function reuse_client_default(client, config)
if client.name ~= config.name then
if client.name ~= config.name or client:is_stopped() then
return false
end