diff options
Diffstat (limited to 'internal/wizard.zsh')
-rwxr-xr-x | internal/wizard.zsh | 450 |
1 files changed, 250 insertions, 200 deletions
diff --git a/internal/wizard.zsh b/internal/wizard.zsh index a8382eef..651ffa1b 100755 --- a/internal/wizard.zsh +++ b/internal/wizard.zsh @@ -63,18 +63,18 @@ typeset -r vertical_bar='|' typeset -r slanted_bar='\uE0BD' typeset -ra lean_left=( - '' '${extra_icons[1]:+$extra_icons[1] }%31F$extra_icons[2]%B%39F~%b%31F/%B%39Fsrc%b%f $prefixes[1]%76F$extra_icons[3]master%f ' - '' '%76F❯%f █' + '%$frame_color[$color]F╭─ ' '${extra_icons[1]:+$extra_icons[1] }%31F$extra_icons[2]%B%39F~%b%31F/%B%39Fsrc%b%f $prefixes[1]%76F$extra_icons[3]master%f ' + '%$frame_color[$color]F╰─ ' '%76F❯%f ${buffer:-█}' ) typeset -ra lean_right=( - ' $prefixes[2]%101F$extra_icons[4]5s%f${show_time:+ $prefixes[3]%66F$extra_icons[5]16:23:42%f}' '' - '' '' + ' $prefixes[2]%101F$extra_icons[4]5s%f${show_time:+ $prefixes[3]%66F$extra_icons[5]16:23:42%f}' ' %$frame_color[$color]F─╮%f' + '' ' %$frame_color[$color]F─╯%f' ) typeset -ra classic_left=( '%$frame_color[$color]F╭─' '%F{$bg_color[$color]}$left_tail%K{$bg_color[$color]} ${extra_icons[1]:+$extra_icons[1]%K{$bg_color[$color]\} %$sep_color[$color]F$left_subsep%f }%31F$extra_icons[2]%B%39F~%b%K{$bg_color[$color]}%31F/%B%39Fsrc%b%K{$bg_color[$color]} %$sep_color[$color]F$left_subsep%f %$prefix_color[$color]F$prefixes[1]%76F$extra_icons[3]master %k%$bg_color[$color]F$left_head%f' - '%$frame_color[$color]F╰─' '%f █' + '%$frame_color[$color]F╰─' '%f ${buffer:-█}' ) typeset -ra classic_right=( @@ -84,7 +84,7 @@ typeset -ra classic_right=( typeset -ra pure_left=( '' '%4F~/src%f %242Fmaster%f %3F5s%f' - '' '%5F❯%f █' + '' '%5F❯%f ${buffer:-█}' ) typeset -ra pure_right=( @@ -94,7 +94,7 @@ typeset -ra pure_right=( typeset -ra rainbow_left=( '%$frame_color[$color]F╭─' '%F{${${extra_icons[1]:+0}:-4}}$left_tail${extra_icons[1]:+%K{0\} $extra_icons[1] %K{4\}%0F$left_sep}%K{4}%254F $extra_icons[2]%B%255F~%b%K{4}%254F/%B%255Fsrc%b%K{4} %K{2}%4F$left_sep %0F$prefixes[1]$extra_icons[3]master %k%2F$left_head%f' - '%$frame_color[$color]F╰─' '%f █' + '%$frame_color[$color]F╰─' '%f ${buffer:-█}' ) typeset -ra rainbow_right=( @@ -116,7 +116,7 @@ function prompt_length() { typeset ${${(%):-$1%$m(l.x.y)}[-1]}=$m done fi - print $x + REPLY=$x } function print_prompt() { @@ -124,17 +124,19 @@ function print_prompt() { local right=${style}_right left=("${(@P)left}") right=("${(@P)right}") + (( disable_rprompt )) && right=() eval "left=(${(@)left:/(#b)(*)/\"$match[1]\"})" eval "right=(${(@)right:/(#b)(*)/\"$match[1]\"})" if (( num_lines == 1)); then left=($left[2] $left[4]) right=($right[1] $right[3]) else - (( left_frame )) || left=('' $left[2] '' '%76F❯%f █') + (( left_frame )) || left=('' $left[2] '' "%76F❯%f ${buffer:-█}") (( right_frame )) || right=($right[1] '' '' '') fi local -i right_indent=prompt_indent - local -i width=$(prompt_length ${(g::):-$left[1]$left[2]$right[1]$right[2]}) + prompt_length ${(g::):-$left[1]$left[2]$right[1]$right[2]} + local -i width=REPLY while (( wizard_columns - width <= prompt_indent + right_indent )); do (( --right_indent )) done @@ -142,7 +144,8 @@ function print_prompt() { for ((i = 1; i < $#left; i+=2)); do local l=${(g::):-$left[i]$left[i+1]} local r=${(g::):-$right[i]$right[i+1]} - local -i gap=$((wizard_columns - prompt_indent - right_indent - $(prompt_length $l$r))) + prompt_length $l$r + local -i gap=$((wizard_columns - prompt_indent - right_indent - REPLY)) (( num_lines == 2 && i == 1 )) && local fill=$gap_char || local fill=' ' print -n -- ${(pl:$prompt_indent:: :)} print -nP -- $l @@ -169,8 +172,8 @@ function flowing() { shift $((OPTIND-1)) local line word lines=() for word in "$@"; do - local n=$(prompt_length ${(g::):-"$line $word"}) - if (( n > wizard_columns )); then + prompt_length ${(g::):-"$line $word"} + if (( REPLY > wizard_columns )); then [[ -z $line ]] || lines+=$line line= fi @@ -183,8 +186,8 @@ function flowing() { done [[ -z $line ]] || lines+=$line for line in $lines; do - local n=$(prompt_length ${(g::)line}) - (( centered && n < wizard_columns )) && print -n -- ${(pl:$(((wizard_columns - n) / 2)):: :)} + prompt_length ${(g::)line} + (( centered && REPLY < wizard_columns )) && print -n -- ${(pl:$(((wizard_columns - REPLY) / 2)):: :)} print -P -- $line done } @@ -264,7 +267,7 @@ function can_install_font() { [[ -w ~ ]] || return fi terminal=Termux - return + return 0 fi if [[ "$(uname)" == Darwin && $TERM_PROGRAM == iTerm.app ]]; then (( $+commands[curl] )) || return @@ -288,7 +291,7 @@ function can_install_font() { [[ $font == (#b)*' '(<->) ]] || return iterm2_font_size=$match[1] terminal=iTerm2 - return + return 0 fi return 1 } @@ -339,6 +342,9 @@ function install_font() { '"Use Non-ASCII Font"' 0 '"Ambiguous Double Width"' 0 '"Terminal Type"' '"xterm-256color"' + '"Minimum Contrast"' 0.000000 + '"ASCII Anti Aliased"' 1 + '"Non-ASCII Anti Aliased"' 1 ) for k v in $settings; do run_command "" /usr/libexec/PlistBuddy -c \ @@ -503,7 +509,7 @@ function ask_debian() { function ask_narrow_icons() { if [[ $POWERLEVEL9K_MODE == (powerline|compatible) ]]; then cap_narrow_icons=0 - return + return 0 fi local text="X" text+="%1F${icons[VCS_GIT_ICON]// }%fX" @@ -552,7 +558,7 @@ function ask_style() { print -n $nl print -P "%B(1) Lean.%b" print -n $nl - style=lean print_prompt + style=lean left_frame=0 right_frame=0 print_prompt print -P "" print -P "%B(2) Classic.%b" print -n $nl @@ -575,7 +581,7 @@ function ask_style() { case $key in q) quit;; r) return 1;; - 1) style=lean; options+=lean; break;; + 1) style=lean; left_frame=0; right_frame=0; options+=lean; break;; 2) style=classic; options+=classic; break;; 3) style=rainbow; options+=rainbow; break;; 4) style=pure; empty_line=1; options+=pure; break;; @@ -627,8 +633,8 @@ function ask_color() { done } -function ask_frame_color() { - [[ $style != rainbow || $num_lines == 1 ]] && return +function ask_ornaments_color() { + [[ $style != (rainbow|lean) || $num_lines == 1 ]] && return [[ $gap_char == ' ' && $left_frame == 0 && $right_frame == 0 ]] && return if [[ $LINES -lt 26 ]]; then local nl='' @@ -637,7 +643,7 @@ function ask_frame_color() { fi while true; do clear - flowing -c "%BFrame Color%b" + flowing -c "%BOrnaments Color%b" print -n $nl print -P "%B(1) Lightest.%b" print -n $nl @@ -675,7 +681,7 @@ function ask_frame_color() { function ask_time() { if (( wizard_columns < 80 )); then show_time= - return + return 0 fi while true; do @@ -751,7 +757,7 @@ function os_icon_name() { function ask_extra_icons() { if [[ $POWERLEVEL9K_MODE == (powerline|compatible) ]]; then - return + return 0 fi local os_icon=${(g::)icons[$(os_icon_name)]} local dir_icon=${(g::)icons[HOME_SUB_ICON]} @@ -808,7 +814,7 @@ function ask_prefixes() { if (( wizard_columns < 80 )); then prefixes=("$concise[@]") options+=concise - return + return 0 fi while true; do clear @@ -839,7 +845,7 @@ function ask_prefixes() { function ask_separators() { if [[ $style != (classic|rainbow) || $cap_diamond != 1 ]]; then - return + return 0 fi if [[ $POWERLEVEL9K_MODE == nerdfont-complete && $LINES -lt 26 ]]; then local nl='' @@ -926,7 +932,7 @@ function ask_separators() { function ask_heads() { if [[ $style != (classic|rainbow) || $cap_diamond != 1 ]]; then - return + return 0 fi if [[ $POWERLEVEL9K_MODE == nerdfont-complete && $LINES -lt 26 ]]; then local nl='' @@ -995,7 +1001,7 @@ function ask_heads() { function ask_tails() { if [[ $style != (classic|rainbow) ]]; then - return + return 0 fi if [[ $POWERLEVEL9K_MODE == nerdfont-complete && $LINES -lt 31 ]]; then local nl='' @@ -1105,7 +1111,7 @@ function ask_num_lines() { function ask_gap_char() { if [[ $num_lines != 2 ]]; then - return + return 0 fi while true; do clear @@ -1140,8 +1146,8 @@ function ask_gap_char() { } function ask_frame() { - if [[ $style != (classic|rainbow) || $num_lines != 2 ]]; then - return + if [[ $style != (classic|rainbow|lean) || $num_lines != 2 ]]; then + return 0 fi (( LINES >= 26 )) && local nl=$'\n' || local nl='' @@ -1217,7 +1223,7 @@ function ask_instant_prompt() { autoload -Uz is-at-least if ! is-at-least 5.4; then instant_prompt=off - return + return 0 fi if (( LINES < 24 )); then local nl='' @@ -1257,27 +1263,53 @@ function ask_instant_prompt() { done } -function ask_confirm() { +function ask_transient_prompt() { + local disable_rprompt=$((num_lines == 1)) + local prompt_char='%76F❯%f' + [[ $style == pure ]] && prompt_char='%5F❯%f' while true; do clear - flowing -c "%BLooks good?%b" - print -P "" - print_prompt - (( empty_line )) && print -P "" - print_prompt + flowing -c "%BEnable Transient Prompt?%b" print -P "" print -P "%B(y) Yes.%b" + if (( LINES >= 25 || num_lines == 1 )); then + print -P "" + print -P "${(pl:$prompt_indent:: :)}$prompt_char %2Fgit%f pull" + elif (( LINES < 23 )); then + print -P "" + else + print -P "${(pl:$prompt_indent:: :)}$prompt_char %2Fgit%f pull" + fi + print -P "${(pl:$prompt_indent:: :)}$prompt_char %2Fgit%f branch x" + (( empty_line )) && echo + buffer="%2Fgit%f checkout x█" print_prompt + print -P "" + print -P "%B(n) No.%b" + if (( LINES >= 25 || num_lines == 1 )); then + print -P "" + buffer="%2Fgit%f pull" print_prompt + (( empty_line )) && echo + elif (( LINES < 23 )); then + print -P "" + else + buffer="%2Fgit%f pull" print_prompt + (( empty_line )) && echo + fi + buffer="%2Fgit%f branch x" print_prompt + (( empty_line )) && echo + buffer="%2Fgit%f checkout x█" print_prompt print -P "" print -P "(r) Restart from the beginning." print -P "(q) Quit and do nothing." print -P "" local key= - read -k key${(%):-"?%BChoice [yrq]: %b"} || quit -c + read -k key${(%):-"?%BChoice [ynrq]: %b"} || quit -c case $key in q) quit;; r) return 1;; - y) break;; + y) transient_prompt=1; break;; + n) transient_prompt=0; break;; esac done } @@ -1286,7 +1318,7 @@ function ask_config_overwrite() { config_backup= config_backup_u=0 if [[ ! -e $__p9k_cfg_path ]]; then - return + return 0 fi while true; do clear @@ -1368,22 +1400,14 @@ function ask_zshrc_edit() { cp -p $__p9k_zshrc $zshrc_backup || quit -c print -r -- $zshrc_content >$zshrc_backup || quit -c zshrc_backup_u=${${TMPDIR:+\$TMPDIR}:-/tmp}/${(q-)zshrc_backup:t} - break fi + break ;; esac done } function generate_config() { - if [[ $style == pure ]]; then - if [[ -e $__p9k_cfg_path ]]; then - unlink $__p9k_cfg_path || return - fi - cp $__p9k_root_dir/config/p10k-$style.zsh $__p9k_cfg_path || return - return - fi - local base && base="$(<$__p9k_root_dir/config/p10k-$style.zsh)" || return local lines=("${(@f)base}") @@ -1399,154 +1423,180 @@ function generate_config() { lines=("${(@)lines//$1/$2}") } - sub MODE $POWERLEVEL9K_MODE + if [[ $style != pure ]]; then + sub MODE $POWERLEVEL9K_MODE + + if (( cap_narrow_icons )); then + uncomment 'typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION' + sub VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER// }'" + sub BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER// }'" + sub VPN_IP_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER// }'" + sub OS_ICON_CONTENT_EXPANSION "'%B\${P9K_CONTENT// }'" + else + sub VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER}'" + sub BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER}'" + sub VPN_IP_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER}'" + fi - if (( cap_narrow_icons )); then - uncomment 'typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION' - sub VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER// }'" - sub BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER// }'" - sub VPN_IP_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER// }'" - sub OS_ICON_CONTENT_EXPANSION "'%B\${P9K_CONTENT// }'" - else - sub VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER}'" - sub BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER}'" - sub VPN_IP_VISUAL_IDENTIFIER_EXPANSION "'\${P9K_VISUAL_IDENTIFIER}'" - fi + if [[ $POWERLEVEL9K_MODE == (compatible|powerline) ]]; then + # Many fonts don't have the default icons. + [[ $POWERLEVEL9K_MODE == compatible ]] && local error='х' || local error='✘' + uncomment 'typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION' + sub STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION "'$error'" + uncomment 'typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION' + sub STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION "'$error'" + uncomment 'typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION' + sub STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION "'$error'" + uncomment 'typeset -g POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION' + sub DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION "'∅'" + uncomment 'typeset -g POWERLEVEL9K_TERRAFORM_VISUAL_IDENTIFIER_EXPANSION' + sub TERRAFORM_VISUAL_IDENTIFIER_EXPANSION "'tf'" + uncomment 'typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION' + sub RANGER_VISUAL_IDENTIFIER_EXPANSION "'▲'" + uncomment 'typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION' + sub KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION "'○'" + uncomment 'typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION' + sub AZURE_VISUAL_IDENTIFIER_EXPANSION "'az'" + uncomment 'typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION' + sub AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION "'eb'" + sub BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION "'≡'" + fi - if [[ $POWERLEVEL9K_MODE == (compatible|powerline) ]]; then - # Many fonts don't have the default icons. - [[ $POWERLEVEL9K_MODE == compatible ]] && local error='х' || local error='✘' - uncomment 'typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION' - sub STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION "'$error'" - uncomment 'typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION' - sub STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION "'$error'" - uncomment 'typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION' - sub STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION "'$error'" - uncomment 'typeset -g POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION' - sub DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION "'∅'" - uncomment 'typeset -g POWERLEVEL9K_TERRAFORM_VISUAL_IDENTIFIER_EXPANSION' - sub TERRAFORM_VISUAL_IDENTIFIER_EXPANSION "'tf'" - uncomment 'typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION' - sub RANGER_VISUAL_IDENTIFIER_EXPANSION "'▲'" - uncomment 'typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION' - sub KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION "'○'" - uncomment 'typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION' - sub AZURE_VISUAL_IDENTIFIER_EXPANSION "'az'" - uncomment 'typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION' - sub AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION "'eb'" - sub BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION "'≡'" - fi + if [[ $POWERLEVEL9K_MODE == (awesome-patched|awesome-fontconfig) && $cap_python == 0 ]]; then + uncomment 'typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION' + uncomment 'typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION' + uncomment 'typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION' + uncomment 'typeset -g POWERLEVEL9K_PYTHON_ICON' + sub VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION "'🐍'" + sub ANACONDA_VISUAL_IDENTIFIER_EXPANSION "'🐍'" + sub PYENV_VISUAL_IDENTIFIER_EXPANSION "'🐍'" + sub PYTHON_ICON "'🐍'" + fi - if [[ $POWERLEVEL9K_MODE == (awesome-patched|awesome-fontconfig) && $cap_python == 0 ]]; then - uncomment 'typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION' - uncomment 'typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION' - uncomment 'typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION' - uncomment 'typeset -g POWERLEVEL9K_PYTHON_ICON' - sub VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION "'🐍'" - sub ANACONDA_VISUAL_IDENTIFIER_EXPANSION "'🐍'" - sub PYENV_VISUAL_IDENTIFIER_EXPANSION "'🐍'" - sub PYTHON_ICON "'🐍'" - fi + if [[ $POWERLEVEL9K_MODE == nerdfont-complete ]]; then + sub BATTERY_STAGES "\$'\uf58d\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf578'" + fi - if [[ $POWERLEVEL9K_MODE == nerdfont-complete ]]; then - sub BATTERY_STAGES "\$'\uf58d\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf578'" - fi + if [[ $style == (classic|rainbow) ]]; then + if [[ $style == classic ]]; then + sub BACKGROUND $bg_color[$color] + sub LEFT_SUBSEGMENT_SEPARATOR "'%$sep_color[$color]F$left_subsep'" + sub RIGHT_SUBSEGMENT_SEPARATOR "'%$sep_color[$color]F$right_subsep'" + sub VCS_LOADING_FOREGROUND $sep_color[$color] + rep '%248F' "%$prefix_color[$color]F" + else + sub LEFT_SUBSEGMENT_SEPARATOR "'$left_subsep'" + sub RIGHT_SUBSEGMENT_SEPARATOR "'$right_subsep'" + fi + sub MULTILINE_FIRST_PROMPT_GAP_FOREGROUND $frame_color[$color] + sub MULTILINE_FIRST_PROMPT_PREFIX "'%$frame_color[$color]F╭─'" + sub MULTILINE_NEWLINE_PROMPT_PREFIX "'%$frame_color[$color]F├─'" + sub MULTILINE_LAST_PROMPT_PREFIX "'%$frame_color[$color]F╰─'" + sub MULTILINE_FIRST_PROMPT_SUFFIX "'%$frame_color[$color]F─╮'" + sub MULTILINE_NEWLINE_PROMPT_SUFFIX "'%$frame_color[$color]F─┤'" + sub MULTILINE_LAST_PROMPT_SUFFIX "'%$frame_color[$color]F─╯'" + sub LEFT_SEGMENT_SEPARATOR "'$left_sep'" + sub RIGHT_SEGMENT_SEPARATOR "'$right_sep'" + sub LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL "'$left_tail'" + sub LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL "'$left_head'" + sub RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL "'$right_head'" + sub RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL "'$right_tail'" + fi - if [[ $style == (classic|rainbow) ]]; then - if [[ $style == classic ]]; then - sub BACKGROUND $bg_color[$color] - sub LEFT_SUBSEGMENT_SEPARATOR "'%$sep_color[$color]F$left_subsep'" - sub RIGHT_SUBSEGMENT_SEPARATOR "'%$sep_color[$color]F$right_subsep'" - sub VCS_LOADING_FOREGROUND $sep_color[$color] - rep '%248F' "%$prefix_color[$color]F" - else - sub LEFT_SUBSEGMENT_SEPARATOR "'$left_subsep'" - sub RIGHT_SUBSEGMENT_SEPARATOR "'$right_subsep'" + if [[ -n $show_time ]]; then + uncomment time fi - sub MULTILINE_FIRST_PROMPT_GAP_FOREGROUND $frame_color[$color] - sub MULTILINE_FIRST_PROMPT_PREFIX "'%$frame_color[$color]F╭─'" - sub MULTILINE_NEWLINE_PROMPT_PREFIX "'%$frame_color[$color]F├─'" - sub MULTILINE_LAST_PROMPT_PREFIX "'%$frame_color[$color]F╰─'" - sub MULTILINE_FIRST_PROMPT_SUFFIX "'%$frame_color[$color]F─╮'" - sub MULTILINE_NEWLINE_PROMPT_SUFFIX "'%$frame_color[$color]F─┤'" - sub MULTILINE_LAST_PROMPT_SUFFIX "'%$frame_color[$color]F─╯'" - sub LEFT_SEGMENT_SEPARATOR "'$left_sep'" - sub RIGHT_SEGMENT_SEPARATOR "'$right_sep'" - sub LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL "'$left_tail'" - sub LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL "'$left_head'" - sub RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL "'$right_head'" - sub RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL "'$right_tail'" - fi - if [[ -n $show_time ]]; then - uncomment time - fi + if [[ -n ${(j::)extra_icons} ]]; then + local branch_icon=${icons[VCS_BRANCH_ICON]// } + sub VCS_BRANCH_ICON "'$branch_icon '" + uncomment os_icon + else + uncomment 'typeset -g POWERLEVEL9K_DIR_CLASSES' + uncomment 'typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION' + uncomment 'typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION' + uncomment 'typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION' + sub VCS_VISUAL_IDENTIFIER_EXPANSION '' + sub COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION '' + sub TIME_VISUAL_IDENTIFIER_EXPANSION '' + fi - if [[ -n ${(j::)extra_icons} ]]; then - local branch_icon=${icons[VCS_BRANCH_ICON]// } - sub VCS_BRANCH_ICON "'$branch_icon '" - uncomment os_icon - else - uncomment 'typeset -g POWERLEVEL9K_DIR_CLASSES' - uncomment 'typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION' - uncomment 'typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION' - uncomment 'typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION' - sub VCS_VISUAL_IDENTIFIER_EXPANSION '' - sub COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION '' - sub TIME_VISUAL_IDENTIFIER_EXPANSION '' - fi + if [[ -n ${(j::)prefixes} ]]; then + uncomment 'typeset -g POWERLEVEL9K_VCS_PREFIX' + uncomment 'typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX' + uncomment 'typeset -g POWERLEVEL9K_CONTEXT_PREFIX' + uncomment 'typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX' + uncomment 'typeset -g POWERLEVEL9K_TIME_PREFIX' + if [[ $style == (lean|classic) ]]; then + [[ $style == classic ]] && local fg="%$prefix_color[$color]F" || local fg="%f" + sub VCS_PREFIX "'${fg}on '" + sub COMMAND_EXECUTION_TIME_PREFIX "'${fg}took '" + sub CONTEXT_PREFIX "'${fg}with '" + sub KUBECONTEXT_PREFIX "'${fg}at '" + sub TIME_PREFIX "'${fg}at '" + sub CONTEXT_TEMPLATE "'%n$fg at %180F%m'" + sub CONTEXT_ROOT_TEMPLATE "'%n$fg at %227F%m'" + else + sub CONTEXT_TEMPLATE "'%n at %m'" + sub CONTEXT_ROOT_TEMPLATE "'%n at %m'" + fi + fi - if [[ -n ${(j::)prefixes} ]]; then - uncomment 'typeset -g POWERLEVEL9K_VCS_PREFIX' - uncomment 'typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX' - uncomment 'typeset -g POWERLEVEL9K_CONTEXT_PREFIX' - uncomment 'typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX' - uncomment 'typeset -g POWERLEVEL9K_TIME_PREFIX' - if [[ $style == (lean|classic) ]]; then - [[ $style == classic ]] && local fg="%$prefix_color[$color]F" || local fg="%f" - sub VCS_PREFIX "'${fg}on '" - sub COMMAND_EXECUTION_TIME_PREFIX "'${fg}took '" - sub CONTEXT_PREFIX "'${fg}with '" - sub KUBECONTEXT_PREFIX "'${fg}at '" - sub TIME_PREFIX "'${fg}at '" - sub CONTEXT_TEMPLATE "'%n$fg at %180F%m'" - sub CONTEXT_ROOT_TEMPLATE "'%n$fg at %227F%m'" - else - sub CONTEXT_TEMPLATE "'%n at %m'" - sub CONTEXT_ROOT_TEMPLATE "'%n at %m'" + if (( num_lines == 1 )); then + local -a tmp + local line + for line in "$lines[@]"; do + [[ $line == (' newline'|*'===[ Line #'*) ]] || tmp+=$line + done + lines=("$tmp[@]") fi - fi - if (( num_lines == 1 )); then - local -a tmp - local line - for line in "$lines[@]"; do - [[ $line == (' newline'|*'===[ Line #'*) ]] || tmp+=$line - done - lines=("$tmp[@]") - fi + sub MULTILINE_FIRST_PROMPT_GAP_CHAR "'$gap_char'" - sub MULTILINE_FIRST_PROMPT_GAP_CHAR "'$gap_char'" + if [[ $style == (classic|rainbow) && $num_lines == 2 ]]; then + if (( ! right_frame )); then + sub MULTILINE_FIRST_PROMPT_SUFFIX '' + sub MULTILINE_NEWLINE_PROMPT_SUFFIX '' + sub MULTILINE_LAST_PROMPT_SUFFIX '' + fi + if (( ! left_frame )); then + sub MULTILINE_FIRST_PROMPT_PREFIX '' + sub MULTILINE_NEWLINE_PROMPT_PREFIX '' + sub MULTILINE_LAST_PROMPT_PREFIX '' + sub STATUS_OK false + sub STATUS_ERROR false + fi + fi - if [[ $style == (classic|rainbow) && $num_lines == 2 ]]; then - if (( ! right_frame )); then - sub MULTILINE_FIRST_PROMPT_SUFFIX '' - sub MULTILINE_NEWLINE_PROMPT_SUFFIX '' - sub MULTILINE_LAST_PROMPT_SUFFIX '' + if [[ $style == lean ]]; then + sub MULTILINE_FIRST_PROMPT_GAP_FOREGROUND $frame_color[$color] + if (( right_frame )); then + sub MULTILINE_FIRST_PROMPT_SUFFIX "'%$frame_color[$color]F─╮'" + sub MULTILINE_NEWLINE_PROMPT_SUFFIX "'%$frame_color[$color]F─┤'" + sub MULTILINE_LAST_PROMPT_SUFFIX "'%$frame_color[$color]F─╯'" + sub RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL "' '" + fi + if (( left_frame )); then + sub MULTILINE_FIRST_PROMPT_PREFIX "'%$frame_color[$color]F╭─'" + sub MULTILINE_NEWLINE_PROMPT_PREFIX "'%$frame_color[$color]F├─'" + sub MULTILINE_LAST_PROMPT_PREFIX "'%$frame_color[$color]F╰─'" + sub LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL "' '" + fi fi - if (( ! left_frame )); then - sub MULTILINE_FIRST_PROMPT_PREFIX '' - sub MULTILINE_NEWLINE_PROMPT_PREFIX '' - sub MULTILINE_LAST_PROMPT_PREFIX '' - uncomment prompt_char - sub STATUS_OK false - sub STATUS_ERROR false + + if [[ $style == (classic|rainbow) ]]; then + if (( num_lines == 2 && ! left_frame )); then + uncomment prompt_char + else + uncomment vi_mode + fi fi - fi - (( empty_line )) && sub PROMPT_ADD_NEWLINE true || sub PROMPT_ADD_NEWLINE false + (( empty_line )) && sub PROMPT_ADD_NEWLINE true || sub PROMPT_ADD_NEWLINE false + fi sub INSTANT_PROMPT $instant_prompt + (( transient_prompt )) && sub TRANSIENT_PROMPT always local header=${(%):-"# Generated by Powerlevel10k configuration wizard on %D{%Y-%m-%d at %H:%M %Z}."}$'\n' header+="# Based on romkatv/powerlevel10k/config/p10k-$style.zsh" @@ -1630,7 +1680,7 @@ while true; do local -i zshrc_has_cfg=0 zshrc_has_instant_prompt=0 write_zshrc=0 local POWERLEVEL9K_MODE= style= config_backup= config_backup_u= gap_char=' ' local left_subsep= right_subsep= left_tail= right_tail= left_head= right_head= show_time= - local -i num_lines=0 empty_line=0 color=2 left_frame=1 right_frame=1 + local -i num_lines=0 empty_line=0 color=2 left_frame=1 right_frame=1 transient_prompt=0 local -i cap_diamond=0 cap_python=0 cap_debian=0 cap_narrow_icons=0 cap_lock=0 local -a extra_icons=('' '' '') local -a prefixes=('' '') @@ -1690,26 +1740,26 @@ while true; do right_head=$fade_in fi _p9k_init_icons - ask_narrow_icons || continue - ask_style || continue + ask_narrow_icons || continue + ask_style || continue if [[ $style != pure ]]; then - ask_color || continue - ask_time || continue - ask_separators || continue - ask_heads || continue - ask_tails || continue - ask_num_lines || continue - ask_gap_char || continue - ask_frame || continue - ask_frame_color || continue - ask_empty_line || continue - ask_extra_icons || continue - ask_prefixes || continue + ask_color || continue + ask_time || continue + ask_separators || continue + ask_heads || continue + ask_tails || continue + ask_num_lines || continue + ask_gap_char || continue + ask_frame || continue + ask_ornaments_color || continue + ask_empty_line || continue + ask_extra_icons || continue + ask_prefixes || continue fi - ask_confirm || continue - ask_instant_prompt || continue - ask_config_overwrite || continue - ask_zshrc_edit || continue + ask_transient_prompt || continue + ask_instant_prompt || continue + ask_config_overwrite || continue + ask_zshrc_edit || continue break done |