aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2019-07-29 14:15:14 +0300
committerromkatv <roman.perepelitsa@gmail.com>2019-07-29 14:15:14 +0300
commitcdbbebf19d58d190022811fdb0ee925111bfe758 (patch)
treecbf5dd4a0ae17733eafb15f7572a4d020dd8c212 /internal
parentbf5ad6d97a45c78227f82c6c28939947df22d66c (diff)
add an option to enable/disable useless icons
Diffstat (limited to 'internal')
-rwxr-xr-xinternal/wizard.zsh131
1 files changed, 98 insertions, 33 deletions
diff --git a/internal/wizard.zsh b/internal/wizard.zsh
index 3f0f124b..99f7dde1 100755
--- a/internal/wizard.zsh
+++ b/internal/wizard.zsh
@@ -1,9 +1,10 @@
#!/usr/bin/env zsh
emulate -L zsh
-setopt extended_glob noaliases
+setopt noaliases
() {
+setopt extended_glob no_prompt_{bang,subst} prompt_{cr,percent,sp}
typeset -g __p9k_root_dir
typeset -gi force=0
@@ -27,8 +28,15 @@ fi
source $__p9k_root_dir/internal/configure.zsh || return
+typeset -ri prompt_indent=4
+
+local POWERLEVEL9K_MODE style config_backup gap_char=' '
+local -i num_lines write_config straight empty_line frame=1
+local -i cap_diamond cap_python cap_narrow_icons cap_lock
+local -a extra_icons=('' '')
+
typeset -ra lean_left=(
- '' '%B%39F~%b%31F/%B%39Fpowerlevel10k%b %76Fmaster ⇡2%f '
+ '' '%31F$extra_icons[1]%B%39F~%b%31F/%B%39Fpowerlevel10k%b %76F$extra_icons[2]master ⇡2%f '
'' '%76F❯%f █'
)
@@ -38,7 +46,7 @@ typeset -ra lean_right=(
)
typeset -ra classic_left=(
- '%240F╭─' '%K{236} %B%39F~%b%K{236}%31F/%B%39Fpowerlevel10k%b%K{236} %244F\uE0B1 %76Fmaster ⇡2 %k%236F\uE0B0%f'
+ '%240F╭─' '%K{236} %31F$extra_icons[1]%B%39F~%b%K{236}%31F/%B%39Fpowerlevel10k%b%K{236} %244F\uE0B1 %76F$extra_icons[2]master ⇡2 %k%236F\uE0B0%f'
'%240F╰─' '%f █'
)
@@ -47,13 +55,8 @@ typeset -ra classic_right=(
'' '%240F─╯%f'
)
-typeset -ri prompt_indent=4
-
-local POWERLEVEL9K_MODE style config_backup gap_char=' '
-local -i num_lines write_config straight empty_line frame=1
-local -i cap_diamond cap_python cap_narrow_icons cap_lock
-
function prompt_length() {
+ # eval "1=\"$1\""
local COLUMNS=1024
local -i x y=$#1 m
if (( y )); then
@@ -75,6 +78,8 @@ function print_prompt() {
local right=${style}_right
left=("${(@P)left}")
right=("${(@P)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])
@@ -298,6 +303,48 @@ function ask_style() {
done
}
+function ask_extra_icons() {
+ if [[ $POWERLEVEL9K_MODE == (powerline|compatible) ]]; then
+ extra_icons=('' '')
+ return
+ fi
+ local dir_icon=${(g::)icons[HOME_SUB_ICON]}
+ local vcs_icon=${(g::)icons[VCS_GIT_GITHUB_ICON]}
+ local branch_icon=${(g::)icons[VCS_BRANCH_ICON]}
+ if (( cap_narrow_icons )); then
+ dir_icon=${dir_icon// }
+ vcs_icon=${vcs_icon// }
+ branch_icon=${branch_icon// }
+ fi
+ local many=("$dir_icon " "$vcs_icon $branch_icon ")
+ while true; do
+ clear
+ centered "%BIcons%b"
+ print -P ""
+ print -P "%B(1) Few icons.%b"
+ print -P ""
+ extra_icons=('' '') print_prompt
+ print -P ""
+ print -P "%B(2) Many icons.%b"
+ print -P ""
+ extra_icons=("$many[@]") print_prompt
+ print -P ""
+ print -P "(r) Restart from the beginning."
+ print -P ""
+ print -P "(q) Quit and do nothing."
+ print -P ""
+
+ local key=
+ read -k key${(%):-"?%BChoice [12rq]: %b"} || return 1
+ case $key in
+ q) quit; return 1;;
+ r) return 2;;
+ 1) extra_icons=('' ''); break;;
+ 2) extra_icons=("$many[@]"); break;;
+ esac
+ done
+}
+
function ask_straight() {
if [[ $style != classic || $cap_diamond == 0 ]]; then
straight=1
@@ -307,11 +354,11 @@ function ask_straight() {
clear
centered "%BPrompt Separators%b"
print -P ""
- print -P "%B(1) Angled%b"
+ print -P "%B(1) Angled.%b"
print -P ""
straight=0 print_prompt
print -P ""
- print -P "%B(2) Straight%b"
+ print -P "%B(2) Straight.%b"
print -P ""
straight=1 print_prompt
print -P ""
@@ -336,11 +383,11 @@ function ask_num_lines() {
clear
centered "%BPrompt Height%b"
print -P ""
- print -P "%B(1) One line%b"
+ print -P "%B(1) One line.%b"
print -P ""
num_lines=1 print_prompt
print -P ""
- print -P "%B(2) Two lines%b"
+ print -P "%B(2) Two lines.%b"
print -P ""
num_lines=2 print_prompt
print -P ""
@@ -368,15 +415,15 @@ function ask_gap_char() {
clear
centered "%BPrompt Connection%b"
print -P ""
- print -P "%B(1) Disconnected%b"
+ print -P "%B(1) Disconnected.%b"
print -P ""
gap_char=" " print_prompt
print -P ""
- print -P "%B(2) Dotted%b"
+ print -P "%B(2) Dotted.%b"
print -P ""
gap_char="·" print_prompt
print -P ""
- print -P "%B(3) Solid%b"
+ print -P "%B(3) Solid.%b"
print -P ""
gap_char="─" print_prompt
print -P ""
@@ -406,15 +453,15 @@ function ask_frame() {
clear
centered "%BPrompt Frame%b"
print -P ""
- print -P "%B(1) No frame%b"
+ print -P "%B(1) No frame.%b"
print -P ""
frame=0 print_prompt
print -P ""
- print -P "%B(2) Only left%b"
+ print -P "%B(2) Only left.%b"
print -P ""
frame=1 print_prompt
print -P ""
- print -P "%B(3) Left and right%b"
+ print -P "%B(3) Left and right.%b"
print -P ""
frame=2 print_prompt
print -P ""
@@ -438,12 +485,12 @@ function ask_empty_line() {
clear
centered "%BPrompt Spacing%b"
print -P ""
- print -P "%B(1) Compact%b"
+ print -P "%B(1) Compact.%b"
print -P ""
print_prompt
print_prompt
print -P ""
- print -P "%B(2) Sparse%b"
+ print -P "%B(2) Sparse.%b"
print -P ""
print_prompt
print -P ""
@@ -533,7 +580,7 @@ function generate_config() {
}
function uncomment() {
- lines=("${(@)lines/#(#b)([[:space:]]#)\# $1(|[[:space:]]*)/$match[1]$1${match[2]:= $match[2]}}")
+ lines=("${(@)lines/#(#b)([[:space:]]#)\# $1( |)/$match[1]$1$match[2]$match[2]}")
}
sub MODE $POWERLEVEL9K_MODE
@@ -551,6 +598,20 @@ function generate_config() {
sub BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION "'⇶'"
fi
+ if [[ -n ${(j::)extra_icons} ]]; then
+ local branch_icon=$icons[VCS_BRANCH_ICON]
+ (( cap_narrow_icons )) && branch_icon=${branch_icon// }
+ sub VCS_BRANCH_ICON "'$branch_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 (( straight )); then
[[ $POWERLEVEL9K_MODE == nerdfont-complete ]] && local subsep='\uE0BD' || local subsep='|'
sub LEFT_SUBSEGMENT_SEPARATOR "'%244F$subsep'"
@@ -572,7 +633,7 @@ function generate_config() {
sub MULTILINE_FIRST_PROMPT_GAP_CHAR "'$gap_char'"
- if (( frame < 2 )); then
+ if (( num_lines == 2 && frame < 2 )); then
sub MULTILINE_FIRST_PROMPT_SUFFIX ''
sub MULTILINE_NEWLINE_PROMPT_SUFFIX ''
sub MULTILINE_LAST_PROMPT_SUFFIX ''
@@ -599,20 +660,23 @@ function generate_config() {
header+=$'.\n'
header+="# Wizard options: $POWERLEVEL9K_MODE"
(( cap_narrow_icons )) && header+=", small icons" || header+=", big icons"
+ [[ -n ${(j::)extra_icons} ]] && header+=", many icons" || header+=", few icons"
if [[ $style == classic ]]; then
(( straight )) && header+=", straight" || header+=", angled"
fi
(( num_lines == 1 )) && header+=", 1 line" || header+=", $num_lines lines"
- case $gap_char in
- ' ') header+=", disconnected";;
- '·') header+=", dotted";;
- '─') header+=", solid";;
- esac
- case $frame in
- 0) header+=", no frame";;
- 1) header+=", left frame";;
- 2) header+=", full frame";;
- esac
+ if (( num_lines == 2 )); then
+ case $gap_char in
+ ' ') header+=", disconnected";;
+ '·') header+=", dotted";;
+ '─') header+=", solid";;
+ esac
+ case $frame in
+ 0) header+=", no frame";;
+ 1) header+=", left frame";;
+ 2) header+=", full frame";;
+ esac
+ fi
(( empty_line )) && header+=", sparse" || header+=", compact";
header+=$'.\n#'
@@ -677,6 +741,7 @@ while true; do
_p9k_init_icons
ask_narrow_icons || { (( $? == 2 )) && continue || return }
ask_style || { (( $? == 2 )) && continue || return }
+ ask_extra_icons || { (( $? == 2 )) && continue || return }
ask_straight || { (( $? == 2 )) && continue || return }
ask_num_lines || { (( $? == 2 )) && continue || return }
ask_gap_char || { (( $? == 2 )) && continue || return }