mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-11-22 12:20:07 +00:00
optimize style escaping
This commit is contained in:
parent
80fc1fd56a
commit
07eae5942d
1 changed files with 29 additions and 24 deletions
|
@ -395,11 +395,15 @@ _p9k_background() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_p9k_foreground() {
|
_p9k_foreground() {
|
||||||
[[ -n $1 ]] && _p9k_ret="%F{$1}" || _p9k_ret="%f"
|
case $1 in
|
||||||
|
'') _p9k_ret="%f";;
|
||||||
|
'#'*) _p9k_ret="%F{$1}";;
|
||||||
|
*) _p9k_ret="%${1}F";;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_p9k_escape_rcurly() {
|
_p9k_escape_style() {
|
||||||
_p9k_ret=${${1//\\/\\\\}//\}/\\\}}
|
[[ $1 == *'}'* ]] && _p9k_ret='${:-"'$1'"}' || _p9k_ret=$1
|
||||||
}
|
}
|
||||||
|
|
||||||
_p9k_escape() {
|
_p9k_escape() {
|
||||||
|
@ -452,8 +456,7 @@ _p9k_left_prompt_segment() {
|
||||||
local end_sep_=$_p9k_ret
|
local end_sep_=$_p9k_ret
|
||||||
|
|
||||||
local style=%b$bg$fg
|
local style=%b$bg$fg
|
||||||
_p9k_escape_rcurly $style
|
local style_=${style//\}/\\\}}
|
||||||
local style_=$_p9k_ret
|
|
||||||
|
|
||||||
_p9k_get_icon $1 WHITESPACE_BETWEEN_LEFT_SEGMENTS ' '
|
_p9k_get_icon $1 WHITESPACE_BETWEEN_LEFT_SEGMENTS ' '
|
||||||
local space=$_p9k_ret
|
local space=$_p9k_ret
|
||||||
|
@ -556,7 +559,8 @@ _p9k_left_prompt_segment() {
|
||||||
if (( has_icon != 0 )); then
|
if (( has_icon != 0 )); then
|
||||||
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
||||||
_p9k_foreground $_p9k_ret
|
_p9k_foreground $_p9k_ret
|
||||||
_p9k_escape_rcurly %b$bg$_p9k_ret
|
_p9k_ret=%b$bg$_p9k_ret
|
||||||
|
_p9k_ret=${_p9k_ret//\}/\\\}}
|
||||||
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
||||||
p+='${_p9k_v}'
|
p+='${_p9k_v}'
|
||||||
|
|
||||||
|
@ -591,7 +595,8 @@ _p9k_left_prompt_segment() {
|
||||||
|
|
||||||
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
||||||
_p9k_foreground $_p9k_ret
|
_p9k_foreground $_p9k_ret
|
||||||
_p9k_escape_rcurly %b$bg$_p9k_ret
|
_p9k_ret=%b$bg$_p9k_ret
|
||||||
|
_p9k_ret=${_p9k_ret//\}/\\\}}
|
||||||
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
||||||
p+='$_p9k_v'
|
p+='$_p9k_v'
|
||||||
fi
|
fi
|
||||||
|
@ -614,11 +619,11 @@ _p9k_left_prompt_segment() {
|
||||||
_p9k_cache_set "$p"
|
_p9k_cache_set "$p"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(( $5 )) && _p9k_ret=$7 || _p9k_escape $7
|
(( $5 )) && _p9k_ret=\"$7\" || _p9k_escape $7
|
||||||
if [[ -z $6 ]]; then
|
if [[ -z $6 ]]; then
|
||||||
_p9k_prompt+="\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]"
|
_p9k_prompt+="\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]"
|
||||||
else
|
else
|
||||||
_p9k_prompt+="\${\${:-$6}:+\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]}"
|
_p9k_prompt+="\${\${:-\"$6\"}:+\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -629,8 +634,7 @@ _p9k_right_prompt_segment() {
|
||||||
local bg_color=$_p9k_ret
|
local bg_color=$_p9k_ret
|
||||||
_p9k_background $bg_color
|
_p9k_background $bg_color
|
||||||
local bg=$_p9k_ret
|
local bg=$_p9k_ret
|
||||||
_p9k_escape_rcurly $_p9k_ret
|
local bg_=${_p9k_ret//\}/\\\}}
|
||||||
local bg_=$_p9k_ret
|
|
||||||
|
|
||||||
_p9k_color $1 FOREGROUND $3
|
_p9k_color $1 FOREGROUND $3
|
||||||
local fg_color=$_p9k_ret
|
local fg_color=$_p9k_ret
|
||||||
|
@ -661,8 +665,7 @@ _p9k_right_prompt_segment() {
|
||||||
local end_sep_=$_p9k_ret
|
local end_sep_=$_p9k_ret
|
||||||
|
|
||||||
local style=%b$bg$fg
|
local style=%b$bg$fg
|
||||||
_p9k_escape_rcurly $style
|
local style_=${style//\}/\\\}}
|
||||||
local style_=$_p9k_ret
|
|
||||||
|
|
||||||
_p9k_get_icon $1 WHITESPACE_BETWEEN_RIGHT_SEGMENTS ' '
|
_p9k_get_icon $1 WHITESPACE_BETWEEN_RIGHT_SEGMENTS ' '
|
||||||
local space=$_p9k_ret
|
local space=$_p9k_ret
|
||||||
|
@ -766,7 +769,8 @@ _p9k_right_prompt_segment() {
|
||||||
|
|
||||||
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
||||||
_p9k_foreground $_p9k_ret
|
_p9k_foreground $_p9k_ret
|
||||||
_p9k_escape_rcurly %b$bg$_p9k_ret
|
_p9k_ret=%b$bg$_p9k_ret
|
||||||
|
_p9k_ret=${_p9k_ret//\}/\\\}}
|
||||||
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
||||||
p+='$_p9k_v'
|
p+='$_p9k_v'
|
||||||
fi
|
fi
|
||||||
|
@ -780,7 +784,8 @@ _p9k_right_prompt_segment() {
|
||||||
if (( has_icon != 0 )); then
|
if (( has_icon != 0 )); then
|
||||||
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
_p9k_color $1 VISUAL_IDENTIFIER_COLOR $fg_color
|
||||||
_p9k_foreground $_p9k_ret
|
_p9k_foreground $_p9k_ret
|
||||||
_p9k_escape_rcurly %b$bg$_p9k_ret
|
_p9k_ret=%b$bg$_p9k_ret
|
||||||
|
_p9k_ret=${_p9k_ret//\}/\\\}}
|
||||||
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
[[ $_p9k_ret != $style_ || $need_style == 1 ]] && p+=$_p9k_ret
|
||||||
p+='${_p9k_v}'
|
p+='${_p9k_v}'
|
||||||
|
|
||||||
|
@ -813,7 +818,7 @@ _p9k_right_prompt_segment() {
|
||||||
else
|
else
|
||||||
_p9k_ret=$fg
|
_p9k_ret=$fg
|
||||||
fi
|
fi
|
||||||
_p9k_escape_rcurly $_p9k_ret
|
_p9k_ret=${_p9k_ret//\}/\\\}}
|
||||||
p+="\${_p9k_w::=${right_space_:+$style_}$right_space_%b$bg_$_p9k_ret}"
|
p+="\${_p9k_w::=${right_space_:+$style_}$right_space_%b$bg_$_p9k_ret}"
|
||||||
|
|
||||||
p+='${_p9k_sss::='
|
p+='${_p9k_sss::='
|
||||||
|
@ -831,11 +836,11 @@ _p9k_right_prompt_segment() {
|
||||||
_p9k_cache_set "$p"
|
_p9k_cache_set "$p"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(( $5 )) && _p9k_ret=$7 || _p9k_escape $7
|
(( $5 )) && _p9k_ret=\"$7\" || _p9k_escape $7
|
||||||
if [[ -z $6 ]]; then
|
if [[ -z $6 ]]; then
|
||||||
_p9k_prompt+="\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]"
|
_p9k_prompt+="\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]"
|
||||||
else
|
else
|
||||||
_p9k_prompt+="\${\${:-$6}:+\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]}"
|
_p9k_prompt+="\${\${:-\"$6\"}:+\${\${:-\${P9K_CONTENT::=$_p9k_ret}$_p9k_cache_val[1]}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1488,7 +1493,7 @@ prompt_dir() {
|
||||||
_p9k_foreground $_p9k_ret
|
_p9k_foreground $_p9k_ret
|
||||||
style+=$_p9k_ret
|
style+=$_p9k_ret
|
||||||
if (( expand )); then
|
if (( expand )); then
|
||||||
_p9k_escape_rcurly $style
|
_p9k_escape_style $style
|
||||||
style=$_p9k_ret
|
style=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1508,7 +1513,7 @@ prompt_dir() {
|
||||||
last_style+=$_p9k_ret
|
last_style+=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
if [[ -n $last_style ]]; then
|
if [[ -n $last_style ]]; then
|
||||||
(( expand )) && _p9k_escape_rcurly $last_style || _p9k_ret=$last_style
|
(( expand )) && _p9k_escape_style $last_style || _p9k_ret=$last_style
|
||||||
parts[-1]=$_p9k_ret${parts[-1]//$'\1'/$'\1'$_p9k_ret}$style
|
parts[-1]=$_p9k_ret${parts[-1]//$'\1'/$'\1'$_p9k_ret}$style
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1520,7 +1525,7 @@ prompt_dir() {
|
||||||
anchor_style+=$_p9k_ret
|
anchor_style+=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
if [[ -n $anchor_style ]]; then
|
if [[ -n $anchor_style ]]; then
|
||||||
(( expand )) && _p9k_escape_rcurly $anchor_style || _p9k_ret=$anchor_style
|
(( expand )) && _p9k_escape_style $anchor_style || _p9k_ret=$anchor_style
|
||||||
if [[ -z $last_style ]]; then
|
if [[ -z $last_style ]]; then
|
||||||
parts=("${(@)parts/%(#b)(*)$'\2'/$_p9k_ret$match[1]$style}")
|
parts=("${(@)parts/%(#b)(*)$'\2'/$_p9k_ret$match[1]$style}")
|
||||||
else
|
else
|
||||||
|
@ -1534,7 +1539,7 @@ prompt_dir() {
|
||||||
if (( $+_POWERLEVEL9K_DIR_SHORTENED_FOREGROUND )); then
|
if (( $+_POWERLEVEL9K_DIR_SHORTENED_FOREGROUND )); then
|
||||||
_p9k_translate_color $_POWERLEVEL9K_DIR_SHORTENED_FOREGROUND
|
_p9k_translate_color $_POWERLEVEL9K_DIR_SHORTENED_FOREGROUND
|
||||||
_p9k_foreground $_p9k_ret
|
_p9k_foreground $_p9k_ret
|
||||||
(( expand )) && _p9k_escape_rcurly $_p9k_ret
|
(( expand )) && _p9k_escape_style $_p9k_ret
|
||||||
local shortened_fg=$_p9k_ret
|
local shortened_fg=$_p9k_ret
|
||||||
(( expand )) && _p9k_escape $delim || _p9k_ret=$delim
|
(( expand )) && _p9k_escape $delim || _p9k_ret=$delim
|
||||||
[[ $_p9k_ret == *%* ]] && _p9k_ret+=$style$shortened_fg
|
[[ $_p9k_ret == *%* ]] && _p9k_ret+=$style$shortened_fg
|
||||||
|
@ -1551,7 +1556,7 @@ prompt_dir() {
|
||||||
if (( $+_POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND )); then
|
if (( $+_POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND )); then
|
||||||
_p9k_translate_color $_POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND
|
_p9k_translate_color $_POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND
|
||||||
_p9k_foreground $_p9k_ret
|
_p9k_foreground $_p9k_ret
|
||||||
(( expand )) && _p9k_escape_rcurly $_p9k_ret
|
(( expand )) && _p9k_escape_style $_p9k_ret
|
||||||
sep=$_p9k_ret
|
sep=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
(( expand )) && _p9k_escape $_POWERLEVEL9K_DIR_PATH_SEPARATOR || _p9k_ret=$_POWERLEVEL9K_DIR_PATH_SEPARATOR
|
(( expand )) && _p9k_escape $_POWERLEVEL9K_DIR_PATH_SEPARATOR || _p9k_ret=$_POWERLEVEL9K_DIR_PATH_SEPARATOR
|
||||||
|
@ -1581,7 +1586,7 @@ prompt_dir() {
|
||||||
else
|
else
|
||||||
_p9k_dir=$_p9k_cache_val[4]
|
_p9k_dir=$_p9k_cache_val[4]
|
||||||
_p9k_dir_len=$_p9k_cache_val[5]
|
_p9k_dir_len=$_p9k_cache_val[5]
|
||||||
_p9k_cache_val[4]='%{d%\}'$_p9k_cache_val[4]'%{d%\}'
|
_p9k_cache_val[4]='%{d%}'$_p9k_cache_val[4]'%{d%}'
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
_p9k_prompt_segment "$_p9k_cache_val[1]" "blue" "$_p9k_color1" "$_p9k_cache_val[2]" "$_p9k_cache_val[3]" "" "$_p9k_cache_val[4]"
|
_p9k_prompt_segment "$_p9k_cache_val[1]" "blue" "$_p9k_color1" "$_p9k_cache_val[2]" "$_p9k_cache_val[3]" "" "$_p9k_cache_val[4]"
|
||||||
|
|
Loading…
Reference in a new issue