mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	Revert "lsp: fix blocking in closing of clients"
This reverts commit 2e6c09838f.
* Fixes #14428
* This commit caused neovim to close while open handles to the uv timer
  to kill active language servers were still open
			
			
This commit is contained in:
		@@ -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()")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user