summaryrefslogtreecommitdiff
path: root/home-config/fish/functions/_tide_sub_configure.fish
diff options
context:
space:
mode:
authorRyan Schanzenbacher <ryan@rschanz.org>2024-04-05 11:57:45 -0400
committerRyan Schanzenbacher <ryan@rschanz.org>2024-04-05 11:57:45 -0400
commitb88d77fb2d0d5028a6f5670695dee6bec129501f (patch)
tree2536b0461d297e647cf07157641c9b1223339adf /home-config/fish/functions/_tide_sub_configure.fish
parent776a7ca55d2d2c3f396de91db1c6c3c5065012cd (diff)
ahhh sloppy fish, still needs fixing, esp with the vars
Diffstat (limited to 'home-config/fish/functions/_tide_sub_configure.fish')
-rw-r--r--home-config/fish/functions/_tide_sub_configure.fish156
1 files changed, 156 insertions, 0 deletions
diff --git a/home-config/fish/functions/_tide_sub_configure.fish b/home-config/fish/functions/_tide_sub_configure.fish
new file mode 100644
index 0000000..22faf3a
--- /dev/null
+++ b/home-config/fish/functions/_tide_sub_configure.fish
@@ -0,0 +1,156 @@
1set -g _tide_color_dark_blue 0087AF
2set -g _tide_color_dark_green 5FAF00
3set -g _tide_color_gold D7AF00
4set -g _tide_color_green 5FD700
5set -g _tide_color_light_blue 00AFFF
6
7# Create an empty fake function for each item
8for func in _fake(functions --all | string match --entire _tide_item)
9 function $func
10 end
11end
12
13for file in (status dirname)/tide/configure/{choices, functions}/**.fish
14 source $file
15end
16
17function _tide_sub_configure
18 set -l choices (path basename (status dirname)/tide/configure/choices/**.fish | path change-extension '')
19 argparse auto $choices= -- $argv
20
21 for var in (set -l --names | string match -e _flag)
22 set -x $var $$var
23 end
24
25 if set -q _flag_auto
26 set -fx _flag_finish 'Overwrite your current tide config'
27 else if test $COLUMNS -lt 55 -o $LINES -lt 21
28 echo 'Terminal size too small; must be at least 55 x 21'
29 return 1
30 end
31
32 _tide_detect_os | read -g --line os_branding_icon os_branding_color os_branding_bg_color
33
34 set -g fake_columns $COLUMNS
35 test $fake_columns -gt 90 && set fake_columns 90
36 set -g fake_lines $LINES
37
38 set -g _tide_selected_option
39 _next_choice all/style
40end
41
42function _next_choice -a nextChoice
43 set -q _tide_selected_option || return 0
44 set -l cmd (string split '/' $nextChoice)[2]
45 $cmd
46end
47
48function _tide_title -a text
49 set -q _flag_auto && return
50
51 command -q clear && clear
52 set_color -o
53 string pad --width (math --scale=0 "$fake_columns/2" + (string length $text)/2) $text
54 set_color normal
55
56 set -g _tide_configure_first_option_after_title
57end
58
59function _tide_option -a symbol text
60 set -ga _tide_symbol_list $symbol
61 set -ga _tide_option_list $text
62
63 if not set -q _flag_auto
64 set -g _tide_configure_first_prompt_after_option
65
66 set_color -o
67 set -e _tide_configure_first_option_after_title || echo
68 echo "($symbol) $text"
69 set_color normal
70 end
71end
72
73function _tide_menu -a func
74 if set -q _flag_auto
75 set -l flag_var_name _flag_$func
76 set -g _tide_selected_option $$flag_var_name
77
78 if test -z "$_tide_selected_option"
79 echo "Missing input for choice '$func'"
80 _tide_exit_configure
81 else if not contains $_tide_selected_option $_tide_option_list
82 echo "Invalid input '$_tide_selected_option' for choice '$func'"
83 _tide_exit_configure
84 else
85 set -e _tide_symbol_list
86 set -e _tide_option_list
87 end
88 return
89 end
90
91 argparse no-restart -- $argv # Add no-restart option for first menu
92
93 echo
94 if not set -q _flag_no_restart
95 set -f r r
96 echo '(r) Restart from the beginning'
97 end
98 echo '(q) Quit and do nothing'\n
99
100 while read --nchars 1 --prompt-str \
101 "$(set_color -o)Choice [$(string join '/' $_tide_symbol_list $r q)] $(set_color normal)" input
102 switch $input
103 case r
104 set -q _flag_no_restart && continue
105 set -e _tide_symbol_list
106 set -e _tide_option_list
107 _next_choice all/style
108 break
109 case q
110 _tide_exit_configure
111 set -e _tide_symbol_list
112 set -e _tide_option_list
113 command -q clear && clear
114 break
115 case $_tide_symbol_list
116 set -g _tide_selected_option $_tide_option_list[(contains -i $input $_tide_symbol_list)]
117 test "$func" != finish &&
118 set -a _tide_configure_current_options --$func=(string escape $_tide_selected_option)
119 set -e _tide_symbol_list
120 set -e _tide_option_list
121 break
122 end
123 end
124end
125
126function _tide_display_prompt
127 set -q _flag_auto && return
128
129 _fake_tide_cache_variables
130 set -l prompt (_fake_tide_prompt)
131
132 set -l bottom_left_prompt_string_length (string length --visible $prompt[-1])
133 set -l right_prompt_string (string pad --width (math $fake_columns-$bottom_left_prompt_string_length) $prompt[1])
134 set -l prompt[-1] "$prompt[-1]$right_prompt_string"
135
136 if set -q _configure_transient
137 if contains newline $fake_tide_left_prompt_items
138 string unescape $prompt[3..]
139 else
140 _fake_tide_item_character
141 echo
142 end
143 else
144 if not set -q _tide_configure_first_prompt_after_option
145 test "$fake_tide_prompt_add_newline_before" = true && echo
146 end
147 string unescape $prompt[2..]
148 end
149
150 set -e _tide_configure_first_prompt_after_option
151 set_color normal
152end
153
154function _tide_exit_configure
155 set -e _tide_selected_option # Skip through all switch and _next_choice
156end