diff options
Diffstat (limited to 'lua/nvim-lsp-installer/installers/init.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/installers/init.lua | 30 |
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) |
