aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--internal/p10k.zsh42
-rwxr-xr-xinternal/wizard.zsh6
3 files changed, 40 insertions, 9 deletions
diff --git a/README.md b/README.md
index 9f877f78..2d100914 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
# Powerlevel10k
+[![Gitter](https://badges.gitter.im/powerlevel10k/community.svg)](https://gitter.im/powerlevel10k/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Powerlevel10k is a theme for ZSH. It's fast, flexible and easy to install and configure.
diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index 6bc71022..b91f4fca 100644
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -1560,7 +1560,12 @@ prompt_dir() {
shortenlen=${_POWERLEVEL9K_SHORTEN_DIR_LENGTH:-1}
(( shortenlen >= 0 )) || shortenlen=1
local -i i=2 e=$(($#parts - shortenlen))
- [[ $p[1] == / ]] && (( ++i ))
+ if (( _POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER )); then
+ (( e += shortenlen ))
+ local orig=("$parts[2]" "${(@)parts[$((shortenlen > $#parts ? -$#parts : -shortenlen)),-1]}")
+ elif [[ $p[1] == / ]]; then
+ (( ++i ))
+ fi
local parent="${_p9k__pwd%/${(pj./.)parts[i,-1]}}"
if (( i <= e )); then
local MATCH= mtimes=()
@@ -1611,11 +1616,34 @@ prompt_dir() {
fi
parent+=/$sub
done
- for ((; i <= $#parts; ++i)); do
- [[ $parts[i] == *["~!#\`\$^&*()\\\"'<>?{}[]"]* ]] && parts[i]='${(Q)${:-'${(qqq)${(q)parts[i]}}'}}'
- parts[i]+=$'\2'
- done
- [[ -n $key ]] && _p9k_cache_ephemeral_set "$key" "${parts[@]}"
+ if (( _POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER )); then
+ local _2=$'\2'
+ (( e = ${parts[(I)*$_2]} ))
+ if (( e > 1 )); then
+ parts[1,e-1]=()
+ fake_first=1
+ elif [[ $p == /?* ]]; then
+ parts[2]="\${(Q)\${:-${(qqq)${(q)orig[1]}}}}"$'\2'
+ fi
+ for ((i = $#parts < shortenlen ? $#parts : shortenlen; i > 0; --i)); do
+ [[ $#parts[-i] == *$'\2' ]] && continue
+ if [[ $orig[-i] == *["~!#\`\$^&*()\\\"'<>?{}[]"]* ]]; then
+ parts[-i]='${(Q)${:-'${(qqq)${(q)orig[-i]}}'}}'$'\2'
+ else
+ parts[-i]=${orig[-i]}$'\2'
+ fi
+ done
+ else
+ for ((; i <= $#parts; ++i)); do
+ [[ $parts[i] == *["~!#\`\$^&*()\\\"'<>?{}[]"]* ]] && parts[i]='${(Q)${:-'${(qqq)${(q)parts[i]}}'}}'
+ parts[i]+=$'\2'
+ done
+ fi
+ if [[ -n $key ]]; then
+ _p9k_cache_ephemeral_set "$key" "${parts[@]}"
+ else
+ _p9k_cache_val=("$key" "${parts[@]}")
+ fi
fi
parts=("${(@)_p9k_cache_val[2,-1]}")
;;
@@ -5204,6 +5232,8 @@ _p9k_init_params() {
_p9k_declare -a POWERLEVEL9K_DIR_CLASSES
_p9k_declare -i POWERLEVEL9K_SHORTEN_DELIMITER_LENGTH
_p9k_declare -e POWERLEVEL9K_SHORTEN_DELIMITER
+ _p9k_declare -b POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER
+ [[ -z $_POWERLEVEL9K_SHORTEN_FOLDER_MARKER ]] && _POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=0
_p9k_declare -i POWERLEVEL9K_SHORTEN_DIR_LENGTH
_p9k_declare -s POWERLEVEL9K_IP_INTERFACE ""
: ${_POWERLEVEL9K_IP_INTERFACE:='.*'}
diff --git a/internal/wizard.zsh b/internal/wizard.zsh
index 5d44868b..d0077c73 100755
--- a/internal/wizard.zsh
+++ b/internal/wizard.zsh
@@ -700,15 +700,15 @@ function ask_color() {
print -n $nl
color=1 print_prompt
print -P ""
- print -P "%B(1) $color_name[2].%b"
+ print -P "%B(2) $color_name[2].%b"
print -n $nl
color=2 print_prompt
print -P ""
- print -P "%B(1) $color_name[3].%b"
+ print -P "%B(3) $color_name[3].%b"
print -n $nl
color=3 print_prompt
print -P ""
- print -P "%B(1) $color_name[4].%b"
+ print -P "%B(4) $color_name[4].%b"
print -n $nl
color=4 print_prompt
print -P ""