Skip to content

Commit

Permalink
feat(ui): add setting to toggle help view (#1468)
Browse files Browse the repository at this point in the history
Closes #1435.
  • Loading branch information
williamboman committed Aug 26, 2023
1 parent 4a8deb6 commit e1602c8
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 7 deletions.
29 changes: 29 additions & 0 deletions lua/mason/settings.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,37 @@ local M = {}

---@class MasonSettings
local DEFAULT_SETTINGS = {
---@since 1.0.0
-- The directory in which to install packages.
install_root_dir = path.concat { vim.fn.stdpath "data", "mason" },

---@since 1.0.0
-- Where Mason should put its bin location in your PATH. Can be one of:
-- - "prepend" (default, Mason's bin location is put first in PATH)
-- - "append" (Mason's bin location is put at the end of PATH)
-- - "skip" (doesn't modify PATH)
---@type '"prepend"' | '"append"' | '"skip"'
PATH = "prepend",

---@since 1.0.0
-- Controls to which degree logs are written to the log file. It's useful to set this to vim.log.levels.DEBUG when
-- debugging issues with package installations.
log_level = vim.log.levels.INFO,

---@since 1.0.0
-- Limit for the maximum amount of packages to be installed at the same time. Once this limit is reached, any further
-- packages that are requested to be installed will be put in a queue.
max_concurrent_installers = 4,

---@since 1.0.0
-- [Advanced setting]
-- The registries to source packages from. Accepts multiple entries. Should a package with the same name exist in
-- multiple registries, the registry listed first will be used.
registries = {
"github:mason-org/mason-registry",
},

---@since 1.0.0
-- The provider implementations to use for resolving supplementary package metadata (e.g., all available versions).
-- Accepts multiple entries, where later entries will be used as fallback should prior providers fail.
-- Builtin providers are:
Expand All @@ -40,6 +46,7 @@ local DEFAULT_SETTINGS = {
},

github = {
---@since 1.0.0
-- The template URL to use when downloading assets from GitHub.
-- The placeholders are the following (in order):
-- 1. The repository (e.g. "rust-lang/rust-analyzer")
Expand All @@ -49,9 +56,11 @@ local DEFAULT_SETTINGS = {
},

pip = {
---@since 1.0.0
-- Whether to upgrade pip to the latest version in the virtual environment before installing packages.
upgrade_pip = false,

---@since 1.0.0
-- These args will be added to `pip install` calls. Note that setting extra args might impact intended behavior
-- and is not recommended.
--
Expand All @@ -60,52 +69,72 @@ local DEFAULT_SETTINGS = {
},

ui = {
---@since 1.0.0
-- Whether to automatically check for new versions when opening the :Mason window.
check_outdated_packages_on_open = true,

---@since 1.0.0
-- The border to use for the UI window. Accepts same border values as |nvim_open_win()|.
border = "none",

---@since 1.0.0
-- Width of the window. Accepts:
-- - Integer greater than 1 for fixed width.
-- - Float in the range of 0-1 for a percentage of screen width.
width = 0.8,

---@since 1.0.0
-- Height of the window. Accepts:
-- - Integer greater than 1 for fixed height.
-- - Float in the range of 0-1 for a percentage of screen height.
height = 0.9,

icons = {
---@since 1.0.0
-- The list icon to use for installed packages.
package_installed = "",
---@since 1.0.0
-- The list icon to use for packages that are installing, or queued for installation.
package_pending = "",
---@since 1.0.0
-- The list icon to use for packages that are not installed.
package_uninstalled = "",
},

keymaps = {
---@since 1.0.0
-- Keymap to expand a package
toggle_package_expand = "<CR>",
---@since 1.0.0
-- Keymap to install the package under the current cursor position
install_package = "i",
---@since 1.0.0
-- Keymap to reinstall/update the package under the current cursor position
update_package = "u",
---@since 1.0.0
-- Keymap to check for new version for the package under the current cursor position
check_package_version = "c",
---@since 1.0.0
-- Keymap to update all installed packages
update_all_packages = "U",
---@since 1.0.0
-- Keymap to check which installed packages are outdated
check_outdated_packages = "C",
---@since 1.0.0
-- Keymap to uninstall a package
uninstall_package = "X",
---@since 1.0.0
-- Keymap to cancel a package installation
cancel_installation = "<C-c>",
---@since 1.0.0
-- Keymap to apply language filter
apply_language_filter = "<C-f>",
---@since 1.1.0
-- Keymap to toggle viewing package installation log
toggle_package_install_log = "<CR>",
---@since 1.8.0
-- Keymap to toggle the help view
toggle_help = "g?",
},
},
}
Expand Down
14 changes: 9 additions & 5 deletions lua/mason/ui/components/header.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,15 @@ return function(state)
p.header " mason.nvim ",
state.view.is_searching and p.Comment " (search mode, press <Esc> to clear)" or p.none "",
}),
Ui.When(
state.view.is_showing_help,
{ p.none " press ", p.highlight_secondary "g?", p.none " for package list" },
{ p.none "press ", p.highlight "g?", p.none " for help" }
),
Ui.When(state.view.is_showing_help, {
p.none " press ",
p.highlight_secondary(settings.current.ui.keymaps.toggle_help),
p.none " for package list",
}, {
p.none "press ",
p.highlight(settings.current.ui.keymaps.toggle_help),
p.none " for help",
}),
{ p.Comment "https://github.com/williamboman/mason.nvim" },
},
}),
Expand Down
2 changes: 1 addition & 1 deletion lua/mason/ui/components/help/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ end
---@param state InstallerUiState
local function GenericHelp(state)
local keymap_tuples = {
{ "Toggle help", "g?" },
{ "Toggle help", settings.current.ui.keymaps.toggle_help },
{ "Toggle package info", settings.current.ui.keymaps.toggle_package_expand },
{ "Toggle package installation log", settings.current.ui.keymaps.toggle_package_install_log },
{ "Apply language filter", settings.current.ui.keymaps.apply_language_filter },
Expand Down
2 changes: 1 addition & 1 deletion lua/mason/ui/instance.lua
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ require "mason.ui.colors"
---@param state InstallerUiState
local function GlobalKeybinds(state)
return Ui.Node {
Ui.Keybind("g?", "TOGGLE_HELP", nil, true),
Ui.Keybind(settings.current.ui.keymaps.toggle_help, "TOGGLE_HELP", nil, true),
Ui.Keybind("q", "CLOSE_WINDOW", nil, true),
Ui.When(not state.view.language_filter, Ui.Keybind("<Esc>", "CLOSE_WINDOW", nil, true)),
Ui.When(state.view.language_filter, Ui.Keybind("<Esc>", "CLEAR_LANGUAGE_FILTER", nil, true)),
Expand Down

0 comments on commit e1602c8

Please sign in to comment.