1
0
mirror of https://github.com/romkatv/powerlevel10k.git synced 2024-12-12 19:18:28 +02:00

Allow to define icons and states as dicitionary.

The next PR will add the possibility of adding new icons to different
paths.
This commit is contained in:
Raul Benito Garcia 2019-07-01 13:46:10 +02:00
parent b404c1b54e
commit d58aa968cf

View File

@ -42,6 +42,16 @@ typeset -gi _P9K_I
typeset -g _P9K_BG
typeset -g _P9K_F
typeset -gA ICON_ASSOC=(
"/etc|/etc/*" ETC_ICON
"${HOME}" HOME_ICON
"${HOME}/*" HOME_SUB_ICON
)
typeset -gA STATE_ASSOC=(
"/etc|/etc/*" ETC
"${HOME}" HOME
"${HOME}/*" HOME_SUBFOLDER
)
# Specifies the maximum number of elements in the cache. When the cache grows over this limit,
# it gets cleared. This is meant to avoid memory leaks when a rogue prompt is filling the cache
# with data.
@ -624,10 +634,9 @@ prompt_host() {
# The 'custom` prompt provides a way for users to invoke commands and display
# the output in a segment.
prompt_custom() {
local segment_name="${3:u}"
# Get content of custom segment
local command="POWERLEVEL9K_CUSTOM_${segment_name}"
local -a cmd=("${(@Q)${(z)${(P):-POWERLEVEL9K_CUSTOM_${segment_name}}}}")
local segment_name=${3:u}
local command=POWERLEVEL9K_CUSTOM_${segment_name}
local -a cmd=("${(@Q)${(z)${(P)command}}}")
whence $cmd[1] &>/dev/null || return
local content=$("$cmd[@]")
[[ -n $content ]] || return
@ -869,14 +878,9 @@ prompt_dir() {
state=NOT_WRITABLE
icon=LOCK_ICON
else
case $PWD in
/etc|/etc/*) state=ETC; icon=ETC_ICON;;
~) state=HOME; icon=HOME_ICON;;
~/*) state=HOME_SUBFOLDER; icon=HOME_SUB_ICON;;
*) state=DEFAULT; icon=FOLDER_ICON;;
esac
icon=${ICON_ASSOC[(k)$PWD]:-DEFAULT}
state=${STATE_ASSOC[(k)$PWD]:-DEFAULT}
fi
local style=%b
_p9k_color blue $0_$state BACKGROUND
_p9k_background $_P9K_RETVAL
@ -1597,7 +1601,8 @@ powerlevel9k_vcs_init() {
local component state
for component in REMOTE_URL COMMIT BRANCH DIRTY TAG REMOTE_BRANCH STAGED UNSTAGED \
UNTRACKED OUTGOING_CHANGES INCOMING_CHANGES STASH ACTION; do
local color=${(P)${:-POWERLEVEL9K_VCS_${component}FORMAT_FOREGROUND}}
local var=POWERLEVEL9K_VCS_${component}FORMAT_FOREGROUND
local color=${(P)var}
if [[ -n $color ]]; then
for state in "${(@k)vcs_states}"; do
local var=POWERLEVEL9K_VCS_${(U)state}_${component}FORMAT_FOREGROUND