From 02767937fc2e1b214c854a8fdde26ae1d3529dd6 Mon Sep 17 00:00:00 2001 From: William Boman Date: Tue, 13 Jun 2023 01:16:55 +0200 Subject: fix(command): run :MasonUpdate synchronously in headless mode (#1347) --- lua/mason/api/command.lua | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'lua') diff --git a/lua/mason/api/command.lua b/lua/mason/api/command.lua index ae889e6c..2521f52f 100644 --- a/lua/mason/api/command.lua +++ b/lua/mason/api/command.lua @@ -1,4 +1,5 @@ local _ = require "mason-core.functional" +local platform = require "mason-core.platform" local function Mason() require("mason.ui").open() @@ -83,7 +84,6 @@ local function MasonInstall(package_specifiers, opts) opts = opts or {} local Package = require "mason-core.package" local registry = require "mason-registry" - local is_headless = #vim.api.nvim_list_uis() == 0 local install_packages = _.map(function(pkg_specifier) local package_name, version = Package.Parse(pkg_specifier) @@ -96,7 +96,7 @@ local function MasonInstall(package_specifiers, opts) } end) - if is_headless then + if platform.is_headless then registry.refresh() local valid_packages = filter_valid_packages(package_specifiers) if #valid_packages ~= #package_specifiers then @@ -185,14 +185,28 @@ local function MasonUpdate() local notify = require "mason-core.notify" local registry = require "mason-registry" notify "Updating registries…" - registry.update(vim.schedule_wrap(function(success, updated_registries) + + ---@param success boolean + ---@param updated_registries RegistrySource[] + local function handle_result(success, updated_registries) if success then local count = #updated_registries notify(("Successfully updated %d %s."):format(count, count == 1 and "registry" or "registries")) else notify(("Failed to update registries: %s"):format(updated_registries), vim.log.levels.ERROR) end - end)) + end + + if platform.is_headless then + local a = require "mason-core.async" + a.run_blocking(function() + local success, updated_registries = a.wait(registry.update) + a.scheduler() + handle_result(success, updated_registries) + end) + else + registry.update(_.scheduler_wrap(handle_result)) + end end vim.api.nvim_create_user_command("MasonUpdate", MasonUpdate, { -- cgit v1.2.3-70-g09d2