aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp.lua
diff options
context:
space:
mode:
authorMichael Lingelbach <m.j.lbach@gmail.com>2021-04-23 12:17:00 -0700
committerMichael Lingelbach <m.j.lbach@gmail.com>2021-04-23 12:17:00 -0700
commit4eb29e079ac12b250f80e2716e1aa1afdcdd505f (patch)
tree3c0c66cee2c4aec4cefc47d81086d923d6fd233d /runtime/lua/vim/lsp.lua
parentbe494023d89772b5b504b13dc21a5240519b1f3a (diff)
downloadrneovim-4eb29e079ac12b250f80e2716e1aa1afdcdd505f.tar.gz
rneovim-4eb29e079ac12b250f80e2716e1aa1afdcdd505f.tar.bz2
rneovim-4eb29e079ac12b250f80e2716e1aa1afdcdd505f.zip
Revert "lsp: fix blocking in closing of clients"
This reverts commit 2e6c09838f88803f31d229002715628639631897. * Fixes #14428 * This commit caused neovim to close while open handles to the uv timer to kill active language servers were still open
Diffstat (limited to 'runtime/lua/vim/lsp.lua')
-rw-r--r--runtime/lua/vim/lsp.lua33
1 files changed, 3 insertions, 30 deletions
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua
index d45827b0d7..cb3d4bbe9f 100644
--- a/runtime/lua/vim/lsp.lua
+++ b/runtime/lua/vim/lsp.lua
@@ -1179,38 +1179,11 @@ function lsp._vim_exit_handler()
client.stop()
end
- local function wait_async(timeout, ms, predicate, cb)
- local timer = uv.new_timer()
- local time = 0
-
- local function done(in_time)
- timer:stop()
- timer:close()
- cb(in_time)
+ if not vim.wait(500, function() return tbl_isempty(active_clients) end, 50) then
+ for _, client in pairs(active_clients) do
+ client.stop(true)
end
-
- timer:start(0, ms, function()
- if predicate() == true then
- done(true)
- return
- end
-
- if time == timeout then
- done(false)
- return
- end
-
- time = time + ms
- end)
end
-
- wait_async(500, 50, function() return tbl_isempty(active_clients) end, function(in_time)
- if not in_time then
- for _, client in pairs(active_clients) do
- client.stop(true)
- end
- end
- end)
end
nvim_command("autocmd VimLeavePre * lua vim.lsp._vim_exit_handler()")