aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/installers/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-lsp-installer/installers/init.lua')
-rw-r--r--lua/nvim-lsp-installer/installers/init.lua30
1 files changed, 18 insertions, 12 deletions
diff --git a/lua/nvim-lsp-installer/installers/init.lua b/lua/nvim-lsp-installer/installers/init.lua
index c4ac2747..ab9ad4f9 100644
--- a/lua/nvim-lsp-installer/installers/init.lua
+++ b/lua/nvim-lsp-installer/installers/init.lua
@@ -21,6 +21,7 @@ end
---@field stdio_sink StdioSink
---@field github_release_file string|nil @Only available if context.use_github_release_file has been called.
---@field os_distribution table<string, any> @Only available if context.use_os_distribution has been called.
+---@field homebrew_prefix string @Only available if context.use_homebrew_prefix has been called.
---@field install_dir string
---@alias ServerInstallerFunction fun(server: Server, callback: ServerInstallCallback, context: ServerInstallContext)
@@ -35,18 +36,23 @@ function M.pipe(installers)
return function(server, callback, context)
local function execute(idx)
- local ok, err = pcall(installers[idx], server, function(success)
- if not success then
- -- oh no, error. exit early
- callback(success)
- elseif installers[idx + 1] then
- -- iterate
- execute(idx + 1)
- else
- -- we done
- callback(success)
- end
- end, context)
+ local ok, err = pcall(
+ installers[idx],
+ server,
+ vim.schedule_wrap(function(success)
+ if not success then
+ -- oh no, error. exit early
+ callback(success)
+ elseif installers[idx + 1] then
+ -- iterate
+ execute(idx + 1)
+ else
+ -- we done
+ callback(success)
+ end
+ end),
+ context
+ )
if not ok then
context.stdio_sink.stderr(tostring(err) .. "\n")
callback(false)