From 8600374371f91843064441113f4023cda1730877 Mon Sep 17 00:00:00 2001 From: Roger Gonzalez Date: Sat, 18 Mar 2023 16:40:57 -0300 Subject: General fish fixes and updates --- .config/fish/functions/_tide_sub_configure.fish | 95 +++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 .config/fish/functions/_tide_sub_configure.fish (limited to '.config/fish/functions/_tide_sub_configure.fish') diff --git a/.config/fish/functions/_tide_sub_configure.fish b/.config/fish/functions/_tide_sub_configure.fish new file mode 100644 index 00000000..cb872901 --- /dev/null +++ b/.config/fish/functions/_tide_sub_configure.fish @@ -0,0 +1,95 @@ +set -g _tide_color_dark_blue 0087AF +set -g _tide_color_dark_green 5FAF00 +set -g _tide_color_gold D7AF00 +set -g _tide_color_green 5FD700 +set -g _tide_color_light_blue 00AFFF + +# Create an empty fake function for each item +for func in _fake(functions --all | string match --entire _tide_item) + function $func + end +end + +for file in (status dirname)/tide/configure/{choices, functions}/**.fish + source $file +end + +function _tide_sub_configure + if test $COLUMNS -lt 55 -o $LINES -lt 21 + echo 'Terminal size too small; must be at least 55 x 21' + return 1 + end + + _tide_detect_os | read -g --line os_branding_icon os_branding_color os_branding_bg_color + + set -g fake_columns $COLUMNS + test $fake_columns -gt 90 && set fake_columns 90 + set -g fake_lines $LINES + + set -g _tide_selected_option + _next_choice all/style +end + +function _next_choice -a nextChoice + set -q _tide_selected_option || return 0 + set -l cmd (string split '/' $nextChoice)[2] + $cmd +end + +function _tide_title -a text + command -q clear && clear + set_color -o + string pad --width (math --scale=0 "$fake_columns/2" + (string length $text)/2) $text + set_color normal +end + +function _tide_option -a symbol text + set -ga _tide_option_list $symbol + + set_color -o + echo "($symbol) $text" + set_color normal +end + +function _tide_menu + set -l list_with_slashes (string join '/' $_tide_option_list) + + echo '(r) Restart from the beginning' + echo '(q) Quit and do nothing'\n + + while true + set_color -o + read --nchars 1 --prompt-str "Choice [$list_with_slashes/r/q] " input + set_color normal + + switch $input + case r + set -e _tide_option_list + _next_choice all/style + break + case q + set -e _tide_selected_option # Skip through all the _next_choices + set -e _tide_option_list + command -q clear && clear + break + case $_tide_option_list + set -e _tide_option_list + set -g _tide_selected_option $input + break + end + end +end + +function _tide_display_prompt -a var_name var_value + test -n "$var_name" && set -g $var_name $var_value + _fake_tide_cache_variables + set -l prompt (_fake_tide_prompt) + + set -l bottom_left_prompt_string_length (string length --visible $prompt[-1]) + set -l right_prompt_string (string pad --width (math $fake_columns-$bottom_left_prompt_string_length) $prompt[1]) + set -l prompt[-1] "$prompt[-1]$right_prompt_string" + + string unescape $prompt[2..] + set_color normal + echo +end -- cgit v1.2.3