diff options
| author | William Boman <william@redwill.se> | 2022-07-07 01:21:08 +0200 |
|---|---|---|
| committer | William Boman <william@redwill.se> | 2022-07-07 01:21:08 +0200 |
| commit | 4a5129d7e615d904612a1f90eed5b6a22596d32b (patch) | |
| tree | 80a6107455903f3c73627279d4e0eb19c26bca4d /lua | |
| parent | style: more stylua (diff) | |
| download | mason-4a5129d7e615d904612a1f90eed5b6a22596d32b.tar mason-4a5129d7e615d904612a1f90eed5b6a22596d32b.tar.gz mason-4a5129d7e615d904612a1f90eed5b6a22596d32b.tar.bz2 mason-4a5129d7e615d904612a1f90eed5b6a22596d32b.tar.lz mason-4a5129d7e615d904612a1f90eed5b6a22596d32b.tar.xz mason-4a5129d7e615d904612a1f90eed5b6a22596d32b.tar.zst mason-4a5129d7e615d904612a1f90eed5b6a22596d32b.zip | |
fix(ui): some ui improvements
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason/ui/components/main/package_list.lua | 25 | ||||
| -rw-r--r-- | lua/mason/ui/instance.lua | 30 |
2 files changed, 42 insertions, 13 deletions
diff --git a/lua/mason/ui/components/main/package_list.lua b/lua/mason/ui/components/main/package_list.lua index 696b838f..68d954cd 100644 --- a/lua/mason/ui/components/main/package_list.lua +++ b/lua/mason/ui/components/main/package_list.lua @@ -210,7 +210,7 @@ local function Installing(state) Ui.CascadingStyleNode({ "INDENT" }, { Ui.HlTextNode(_.map(function(line) return { p.muted(line) } - end, pkg_state.tailed_output)), + end, pkg_state.short_tailed_output)), }), } end, @@ -249,13 +249,22 @@ local function Failed(state) packages = packages, ---@param package Package list_item_renderer = function(package) - return PackageComponent(state, package, { - icon = p.error(settings.current.ui.icons.package_pending), - keybinds = { - Ui.Keybind(settings.current.ui.keymaps.install_package, "INSTALL_PACKAGE", package), - Ui.Keybind(settings.current.ui.keymaps.toggle_package_expand, "TOGGLE_EXPAND_PACKAGE", package), - }, - }) + ---@type UiPackageState + local pkg_state = state.packages.states[package.name] + return Ui.Node { + PackageComponent(state, package, { + icon = p.error(settings.current.ui.icons.package_pending), + keybinds = { + Ui.Keybind(settings.current.ui.keymaps.install_package, "INSTALL_PACKAGE", package), + Ui.Keybind(settings.current.ui.keymaps.toggle_package_expand, "TOGGLE_EXPAND_PACKAGE", package), + }, + }), + Ui.CascadingStyleNode({ "INDENT" }, { + Ui.HlTextNode(_.map(function(line) + return { p.muted(line) } + end, pkg_state.tailed_output)), + }), + } end, } end diff --git a/lua/mason/ui/instance.lua b/lua/mason/ui/instance.lua index a6db4d25..eb35cfef 100644 --- a/lua/mason/ui/instance.lua +++ b/lua/mason/ui/instance.lua @@ -41,6 +41,7 @@ end ---@field is_terminated boolean ---@field latest_spawn string|nil ---@field tailed_output string[] +---@field short_tailed_output string[] ---@field linked_executables table<string, string> ---@field version string|nil ---@field is_checking_version boolean @@ -209,7 +210,7 @@ local function setup_handle(handle) ---@param chunk string local function handle_output(chunk) mutate_state(function(state) - -- TODO: fix this + -- TODO: improve this local pkg_state = state.packages.states[handle.package.name] for idx, line in ipairs(vim.split(chunk, "\n")) do if idx == 1 and pkg_state.tailed_output[#pkg_state.tailed_output] then @@ -219,7 +220,7 @@ local function setup_handle(handle) pkg_state.tailed_output[#pkg_state.tailed_output + 1] = line end end - pkg_state.tailed_output = { + pkg_state.short_tailed_output = { pkg_state.tailed_output[#pkg_state.tailed_output - 1] or "", pkg_state.tailed_output[#pkg_state.tailed_output] or "", } @@ -287,6 +288,7 @@ local function create_initial_package_state() return { latest_spawn = nil, tailed_output = {}, + short_tailed_output = {}, version = nil, is_checking_version = false, new_version = nil, @@ -312,6 +314,11 @@ for _, package in ipairs(packages) do hydrate_detailed_package_state(package) end mutate_package_grouping(package, "installed") + mutate_state(function(state) + state.packages.states[package.name].new_version = nil + state.packages.states[package.name].tailed_output = {} + state.packages.states[package.name].short_tailed_output = {} + end) calculate_stats() vim.schedule_wrap(notify)(("%q was successfully installed."):format(package.name)) end) @@ -468,9 +475,22 @@ local function check_new_visible_package_versions() if state.packages.new_versions_check.is_checking then return end - local installed_visible_packages = _.filter(function(package) - return state.packages.visible[package.name] - end, state.packages.installed) + local installed_visible_packages = _.compose( + _.filter( + ---@param package Package + function(package) + return package + :get_handle() + :map(function(handle) + return handle:is_closed() + end) + :or_else(true) + end + ), + _.filter(function(package) + return state.packages.visible[package.name] + end) + )(state.packages.installed) if #installed_visible_packages == 0 then return |
