feat(lsp): support auto-force escalation in client stop #36430

(cherry picked from commit 02cd564896)
This commit is contained in:
Maria Solano
2025-11-02 09:01:41 -08:00
committed by GitHub
parent e0fdfd3d4b
commit b92e92b20d
3 changed files with 24 additions and 40 deletions

View File

@@ -804,8 +804,20 @@ end
--- you request to stop a client which has previously been requested to
--- shutdown, it will automatically escalate and force shutdown.
---
--- @param force? boolean
--- If `force` is a number, it will be treated as the time in milliseconds to
--- wait before forcing the shutdown.
---
--- Note: Forcing shutdown while a server is busy writing out project or index
--- files can lead to file corruption.
---
--- @param force? boolean|integer
function Client:stop(force)
if type(force) == 'number' then
vim.defer_fn(function()
self:stop(true)
end, force)
end
local rpc = self.rpc
if rpc.is_closing() then
return
@@ -825,7 +837,7 @@ function Client:stop(force)
if err == nil then
rpc.notify(ms.exit)
else
-- If there was an error in the shutdown request, then term to be safe.
-- If there was an error in the shutdown request, then terminate to be safe.
rpc.terminate()
self._graceful_shutdown_failed = true
end