diff options
| author | William Boman <william@redwill.se> | 2023-03-05 03:33:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-05 02:33:41 +0000 |
| commit | 51228a60d1a5017030429ba38f018ff27a460c76 (patch) | |
| tree | aab1aba6059cab2c93e3c6eca76aed5686c91a6a /lua | |
| parent | fix(package): emit registry event on abnormal failures (#1061) (diff) | |
| download | mason-51228a60d1a5017030429ba38f018ff27a460c76.tar mason-51228a60d1a5017030429ba38f018ff27a460c76.tar.gz mason-51228a60d1a5017030429ba38f018ff27a460c76.tar.bz2 mason-51228a60d1a5017030429ba38f018ff27a460c76.tar.lz mason-51228a60d1a5017030429ba38f018ff27a460c76.tar.xz mason-51228a60d1a5017030429ba38f018ff27a460c76.tar.zst mason-51228a60d1a5017030429ba38f018ff27a460c76.zip | |
feat(ui): display registries in help window (#1062)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-registry/init.lua | 1 | ||||
| -rw-r--r-- | lua/mason-registry/sources/init.lua | 6 | ||||
| -rw-r--r-- | lua/mason-registry/sources/lua.lua | 8 | ||||
| -rw-r--r-- | lua/mason/ui/components/footer.lua | 17 | ||||
| -rw-r--r-- | lua/mason/ui/components/help/init.lua | 24 | ||||
| -rw-r--r-- | lua/mason/ui/instance.lua | 21 |
6 files changed, 47 insertions, 30 deletions
diff --git a/lua/mason-registry/init.lua b/lua/mason-registry/init.lua index f897095c..01f18c90 100644 --- a/lua/mason-registry/init.lua +++ b/lua/mason-registry/init.lua @@ -9,6 +9,7 @@ local sources = require "mason-registry.sources" ---@class RegistrySource ---@field get_package fun(self: RegistrySource, pkg_name: string): Package? ---@field get_all_package_names fun(self: RegistrySource): string[] +---@field get_display_name fun(self: RegistrySource): string ---@field is_installed fun(self: RegistrySource): boolean ---@field install async fun(self: RegistrySource): Result diff --git a/lua/mason-registry/sources/init.lua b/lua/mason-registry/sources/init.lua index 39b7fad5..e4abe062 100644 --- a/lua/mason-registry/sources/init.lua +++ b/lua/mason-registry/sources/init.lua @@ -36,7 +36,9 @@ function M.set_registries(registry_ids) end end -function M.iter() +---@param opts? { include_uninstalled?: boolean } +function M.iter(opts) + opts = opts or {} local i = 1 return function() while i <= #registries do @@ -47,7 +49,7 @@ function M.iter() registries[i] = registry end i = i + 1 - if registry:is_installed() then + if opts.include_uninstalled or registry:is_installed() then return registry end end diff --git a/lua/mason-registry/sources/lua.lua b/lua/mason-registry/sources/lua.lua index d2032cc0..7af4feee 100644 --- a/lua/mason-registry/sources/lua.lua +++ b/lua/mason-registry/sources/lua.lua @@ -39,6 +39,14 @@ function LuaRegistrySource:install() return Result.success() end +function LuaRegistrySource:get_display_name() + if self:is_installed() then + return ("require(%q)"):format(self.spec.mod) + else + return ("require(%q) [uninstalled]"):format(self.spec.mod) + end +end + function LuaRegistrySource:__tostring() return ("LuaRegistrySource(mod=%s)"):format(self.spec.mod) end diff --git a/lua/mason/ui/components/footer.lua b/lua/mason/ui/components/footer.lua deleted file mode 100644 index c4319bf7..00000000 --- a/lua/mason/ui/components/footer.lua +++ /dev/null @@ -1,17 +0,0 @@ -local Ui = require "mason-core.ui" -local p = require "mason.ui.palette" - ----@param state InstallerUiState -return function(state) - if not state.stats.used_disk_space then - return Ui.Node {} - end - return Ui.CascadingStyleNode({ "CENTERED" }, { - Ui.Table { - { - p.muted "Used disk space:", - p.none(state.stats.used_disk_space), - }, - }, - }) -end diff --git a/lua/mason/ui/components/help/init.lua b/lua/mason/ui/components/help/init.lua index 27307dce..c6944ab5 100644 --- a/lua/mason/ui/components/help/init.lua +++ b/lua/mason/ui/components/help/init.lua @@ -68,16 +68,26 @@ local function GenericHelp(state) { p.muted "Mason log: ", p.none(log.outfile) }, }, Ui.EmptyLine(), - Ui.Table(vim.list_extend( + Ui.HlTextNode { { - { - p.Bold "Keyboard shortcuts", - }, + p.Bold "Registries", + }, + { + p.muted "Packages are sourced from the following registries:", }, - _.map(function(keymap_tuple) + unpack(_.map(function(registry) + return { p.none(" - " .. registry) } + end, state.info.registries)), + }, + Ui.EmptyLine(), + Ui.Table { + { + p.Bold "Keyboard shortcuts", + }, + unpack(_.map(function(keymap_tuple) return { p.muted(keymap_tuple[1]), p.highlight(keymap_tuple[2]) } - end, keymap_tuples) - )), + end, keymap_tuples)), + }, Ui.EmptyLine(), Ui.HlTextNode { { p.Bold "Problems installing packages" }, diff --git a/lua/mason/ui/instance.lua b/lua/mason/ui/instance.lua index c7000bc5..52717654 100644 --- a/lua/mason/ui/instance.lua +++ b/lua/mason/ui/instance.lua @@ -9,7 +9,6 @@ local settings = require "mason.settings" local notify = require "mason-core.notify" local Header = require "mason.ui.components.header" -local Footer = require "mason.ui.components.footer" local Help = require "mason.ui.components.help" local Tabs = require "mason.ui.components.tabs" local Main = require "mason.ui.components.main" @@ -57,9 +56,11 @@ end ---@class InstallerUiState local INITIAL_STATE = { - stats = { + info = { ---@type string | nil used_disk_space = nil, + ---@type string[] + registries = {}, }, view = { is_showing_help = false, @@ -132,7 +133,6 @@ window.view( Main(state), } end), - Footer(state), } end ) @@ -210,6 +210,10 @@ local function setup_handle(handle) mutate_package_grouping(handle.package, "queued", true) elseif handle.state == "ACTIVE" then mutate_package_grouping(handle.package, "installing", true) + elseif handle.state == "CLOSED" then + mutate_state(function(state) + state.packages.states[handle.package.name].is_terminated = false + end) end end @@ -264,7 +268,6 @@ local function setup_handle(handle) handle_spawnhandle_change() mutate_state(function(state) state.packages.states[handle.package.name] = create_initial_package_state() - state.packages.states[handle.package.name].short_tailed_output = "Installing…" end) end @@ -642,6 +645,16 @@ if settings.current.ui.check_outdated_packages_on_open then ) end +do + local registries = {} + for source in require("mason-registry.sources").iter { include_uninstalled = true } do + table.insert(registries, source:get_display_name()) + end + mutate_state(function(state) + state.info.registries = registries + end) +end + return { window = window, set_view = function(view) |
