Refactor prompt_mise function

for improved plugin handling and zsh-identifier safety

[Created using GitHub Copilot]

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Philip Henning 2026-06-17 09:51:04 +02:00
parent ac016529ca
commit e28a87f669

View file

@ -12,11 +12,20 @@
function prompt_mise() { function prompt_mise() {
local plugins=("${(@f)$(mise ls --current --offline 2>/dev/null | awk '!/\(symlink\)/ && $3!="~/.tool-versions" && $3!="~/.config/mise/config.toml" && $3!="(missing)" {if ($1) print $1, $2}')}") local plugins=("${(@f)$(mise ls --current --offline 2>/dev/null | awk '!/\(symlink\)/ && $3!="~/.tool-versions" && $3!="~/.config/mise/config.toml" && $3!="(missing)" {if ($1) print $1, $2}')}")
local plugin local plugin
for plugin in ${(k)plugins}; do
for plugin in "${plugins[@]}"; do
local parts=("${(@s/ /)plugin}") local parts=("${(@s/ /)plugin}")
local tool=${(U)parts[1]} local tool_raw="${parts[1]}"
local version=${parts[2]} local version="${parts[2]}"
p10k segment -r -i "${tool}_ICON" -s $tool -t "$version"
[[ -z "$tool_raw" || -z "$version" ]] && continue
# P10k segment state/icon names must be zsh-identifier-safe.
# Example: aqua:raviqqe/muffet -> AQUA_RAVIQQE_MUFFET
local tool="${(U)tool_raw}"
tool="${tool//[^A-Z0-9_]/_}"
p10k segment -r -i "${tool}_ICON" -s "$tool" -t "$version"
done done
} }
@ -39,8 +48,8 @@
typeset -g POWERLEVEL9K_MISE_PYTHON_BACKGROUND=33 typeset -g POWERLEVEL9K_MISE_PYTHON_BACKGROUND=33
typeset -g POWERLEVEL9K_MISE_RUBY_BACKGROUND=196 typeset -g POWERLEVEL9K_MISE_RUBY_BACKGROUND=196
typeset -g POWERLEVEL9K_MISE_RUST_BACKGROUND=208 typeset -g POWERLEVEL9K_MISE_RUST_BACKGROUND=208
typeset -g POWERLEVEL9K_MISE_AQUA_RAVIQQE_MUFFET_BACKGROUND=33
# Substitute the default asdf prompt element # Substitute the default asdf prompt element
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=("${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[@]/asdf/mise}") typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=("${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[@]/asdf/mise}")
} }