From 37dc2ba5e25bfe79071420adda0186ea3ce07e37 Mon Sep 17 00:00:00 2001 From: romkatv Date: Tue, 3 Sep 2019 10:38:47 +0200 Subject: [PATCH] wizard: better text overflow --- internal/wizard.zsh | 95 ++++++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 40 deletions(-) diff --git a/internal/wizard.zsh b/internal/wizard.zsh index 87d20823..153f02fb 100755 --- a/internal/wizard.zsh +++ b/internal/wizard.zsh @@ -128,7 +128,18 @@ function href() { print -r -- $'%{\e]8;;'${1//\%/%%}$'\a%}'${1//\%/%%}$'%{\e]8;;\a%}' } -function centered() { +function flowing() { + local opt + local -i centered indentation + while getopts 'ci:' opt; do + case $opt in + i) indentation=$OPTARG;; + c) centered=1;; + +c) centered=0;; + \?) exit 1;; + esac + done + shift $((OPTIND-1)) local line word lines=() for word in "$@"; do local n=$(prompt_length ${(g::):-"$line $word"}) @@ -136,13 +147,17 @@ function centered() { [[ -z $line ]] || lines+=$line line= fi - [[ -z $line ]] || line+=' ' + if [[ -n $line ]]; then + line+=' ' + elif (( $#lines )); then + line=${(pl:$indentation:: :)} + fi line+=$word done [[ -z $line ]] || lines+=$line for line in $lines; do local n=$(prompt_length ${(g::)line}) - (( n < wizard_columns )) && print -n -- ${(pl:$(((wizard_columns - n) / 2)):: :)} + (( centered && n < wizard_columns )) && print -n -- ${(pl:$(((wizard_columns - n) / 2)):: :)} print -P -- $line done } @@ -184,19 +199,19 @@ function ask_diamond() { while true; do clear if (( force )); then - centered This is %4FPowerlevel10k configuration wizard%f. \ - It will ask you a few questions and configure your prompt. + flowing -c This is %4FPowerlevel10k configuration wizard%f. \ + It will ask you a few questions and configure your prompt. else - centered This is %4FPowerlevel10k configuration wizard%f. \ - You are seeing it because you haven\'t defined any \ - Powerlevel10k configuration options. It will ask \ - you a few questions and configure your prompt. + flowing -c This is %4FPowerlevel10k configuration wizard%f. \ + You are seeing it because you haven\'t defined any \ + Powerlevel10k configuration options. It will ask \ + you a few questions and configure your prompt. fi print -P "" - centered "%BDoes this look like a %b%2Fdiamond%f%B (rotated square)?%b" - centered "reference: $(href https://graphemica.com/%E2%97%86)" + flowing -c "%BDoes this look like a %b%2Fdiamond%f%B (rotated square)?%b" + flowing -c "reference: $(href https://graphemica.com/%E2%97%86)" print -P "" - centered "---> \uE0B2\uE0B0 <---" + flowing -c -- "---> \uE0B2\uE0B0 <---" print -P "" print -P "%B(y) Yes.%b" print -P "" @@ -218,11 +233,11 @@ function ask_diamond() { function ask_lock() { while true; do clear - [[ -n $2 ]] && centered "$2" - centered "%BDoes this look like a %b%2Flock%f%B?%b" - centered "reference: $(href https://fontawesome.com/icons/lock)" + [[ -n $2 ]] && flowing -c "$2" + flowing -c "%BDoes this look like a %b%2Flock%f%B?%b" + flowing -c "reference: $(href https://fontawesome.com/icons/lock)" print -P "" - centered "---> $1 <---" + flowing -c -- "---> $1 <---" print -P "" print -P "%B(y) Yes.%b" print -P "" @@ -246,10 +261,10 @@ function ask_lock() { function ask_python() { while true; do clear - centered "%BDoes this look like a %b%2FPython logo%f%B?%b" - centered "reference: $(href https://fontawesome.com/icons/python)" + flowing -c "%BDoes this look like a %b%2FPython logo%f%B?%b" + flowing -c "reference: $(href https://fontawesome.com/icons/python)" print -P "" - centered "---> \uE63C <---" + flowing -c -- "---> \uE63C <---" print -P "" print -P "%B(y) Yes.%b" print -P "" @@ -273,10 +288,10 @@ function ask_python() { function ask_debian() { while true; do clear - centered "%BDoes this look like a %b%2FDebian logo%f%B (swirl/spiral)?%b" - centered "reference: $(href https://debian.org/logos/openlogo-nd.svg)" + flowing -c "%BDoes this look like a %b%2FDebian logo%f%B (swirl/spiral)?%b" + flowing -c "reference: $(href https://debian.org/logos/openlogo-nd.svg)" print -P "" - centered "---> \uF306 <---" + flowing -c -- "---> \uF306 <---" print -P "" print -P "%B(y) Yes.%b" print -P "" @@ -314,11 +329,11 @@ function ask_narrow_icons() { text+="%3F${icons[RAM_ICON]// }%fX" while true; do clear - centered "%BDo all these icons %b%2Ffit between the crosses%f%B?%b" + flowing -c "%BDo all these icons %b%2Ffit between the crosses%f%B?%b" print -P "" - centered "---> $text <---" + flowing -c -- "---> $text <---" print -P "" - print -P "%B(y) Yes. Icons are very close to the crosses but there is %b%2Fno overlap%f%B.%b" + flowing +c -i 5 "%B(y) Yes." Icons are very close to the crosses but there is "%b%2Fno overlap%f%B.%b" print -P "" print -P "%B(n) No. Some icons %b%2Foverlap%f%B neighbouring crosses.%b" print -P "" @@ -340,7 +355,7 @@ function ask_narrow_icons() { function ask_style() { while true; do clear - centered "%BPrompt Style%b" + flowing -c "%BPrompt Style%b" print -P "" print -P "%B(1) Lean.%b" print -P "" @@ -374,7 +389,7 @@ function ask_color() { fi while true; do clear - centered "%BPrompt Color%b" + flowing -c "%BPrompt Color%b" print -n $nl print -P "%B(1) Lightest.%b" print -n $nl @@ -417,7 +432,7 @@ function ask_time() { while true; do clear - centered "%BShow current time?%b" + flowing -c "%BShow current time?%b" print -P "" print -P "%B(y) Yes.%b" print -P "" @@ -514,7 +529,7 @@ function ask_extra_icons() { local many=("$os_icon" "$dir_icon " "$vcs_icon $branch_icon " "$duration_icon " "$time_icon ") while true; do clear - centered "%BIcons%b" + flowing -c "%BIcons%b" print -P "" print -P "%B(1) Few icons.%b" print -P "" @@ -549,7 +564,7 @@ function ask_prefixes() { fi while true; do clear - centered "%BPrompt Flow%b" + flowing -c "%BPrompt Flow%b" print -P "" print -P "%B(1) Concise.%b" print -P "" @@ -581,7 +596,7 @@ function ask_separators() { while true; do local extra= clear - centered "%BPrompt Separators%b" + flowing -c "%BPrompt Separators%b" print -P " separator" print -P "%B(1) Angled.%b /" print -P " /" @@ -644,7 +659,7 @@ function ask_heads() { while true; do local extra= clear - centered "%BPrompt Heads%b" + flowing -c "%BPrompt Heads%b" print -P " head" print -P "%B(1) Sharp.%b |" print -P " v" @@ -697,7 +712,7 @@ function ask_tails() { while true; do local extra= clear - centered "%BPrompt Tails%b" + flowing -c "%BPrompt Tails%b" print -n $nl print -P "%B(1) Flat.%b" print -n $nl @@ -755,7 +770,7 @@ function ask_tails() { function ask_num_lines() { while true; do clear - centered "%BPrompt Height%b" + flowing -c "%BPrompt Height%b" print -P "" print -P "%B(1) One line.%b" print -P "" @@ -786,7 +801,7 @@ function ask_gap_char() { fi while true; do clear - centered "%BPrompt Connection%b" + flowing -c "%BPrompt Connection%b" print -P "" print -P "%B(1) Disconnected.%b" print -P "" @@ -824,7 +839,7 @@ function ask_frame() { (( LINES >= 26 )) && local nl=$'\n' || local nl='' while true; do clear - centered "%BPrompt Frame%b" + flowing -c "%BPrompt Frame%b" print -n $nl print -P "%B(1) No frame.%b" print -n $nl @@ -862,7 +877,7 @@ function ask_frame() { function ask_empty_line() { while true; do clear - centered "%BPrompt Spacing%b" + flowing -c "%BPrompt Spacing%b" print -P "" print -P "%B(1) Compact.%b" print -P "" @@ -893,7 +908,7 @@ function ask_empty_line() { function ask_confirm() { while true; do clear - centered "%BLooks good?%b" + flowing -c "%BLooks good?%b" print -P "" print_prompt (( empty_line )) && print -P "" @@ -923,8 +938,8 @@ function ask_config_overwrite() { fi while true; do clear - centered "Powerlevel10k config file already exists." - centered "%BOverwrite %b%2F${__p9k_cfg_path_u//\\/\\\\}%f%B?%b" + flowing -c "Powerlevel10k config file already exists." + flowing -c "%BOverwrite" "%b%2F${__p9k_cfg_path_u//\\/\\\\}%f%B?%b" print -P "" print -P "%B(y) Yes.%b" print -P ""