mirror of
https://github.com/IlanCosman/tide.git
synced 2024-12-23 20:13:05 +03:00
300 lines
6.6 KiB
Fish
300 lines
6.6 KiB
Fish
function lean_wizard
|
|
if test $COLUMNS -lt 55 || test $LINES -lt 21
|
|
echo 'Terminal size too small; must be at least 55 x 21'
|
|
return 1
|
|
end
|
|
|
|
set -g fishPrompt "$__fish_config_dir/functions/fish_prompt.fish"
|
|
set -g fakePrompt "$__fish_config_dir/lean_theme/fake_prompt.fish"
|
|
|
|
set -g columns $COLUMNS
|
|
if test $columns -gt 100
|
|
set -g columns 100
|
|
end
|
|
set -g lines $LINES
|
|
|
|
_begin
|
|
end
|
|
|
|
function _begin
|
|
_setDefaults
|
|
_promptTime
|
|
end
|
|
|
|
function _setDefaults
|
|
if test $lines -ge 26
|
|
set -g new_line true
|
|
else
|
|
set -g new_line false
|
|
end
|
|
set -g prompt_height 2
|
|
set -g fake_lean_time_format ''
|
|
set -g fake_lean_prompt_connection ' '
|
|
set -g fake_lean_prompt_connection_color 6C6C6C
|
|
end
|
|
|
|
function _promptTime
|
|
_title 'Show current time?'
|
|
|
|
_option 1 'No'
|
|
_displayPrompt fake_lean_time_format ''
|
|
|
|
_option 2 '24-hour format'
|
|
_displayPrompt fake_lean_time_format '%T'
|
|
|
|
_option 3 '12-hour format'
|
|
_displayPrompt fake_lean_time_format '%r'
|
|
|
|
_displayRestartAndQuit
|
|
|
|
switch (_menu 'Choice' 1/2/3/r/q)
|
|
case 1
|
|
set -g fake_lean_time_format ''
|
|
_promptHeight
|
|
case 2
|
|
set -g fake_lean_time_format '%T'
|
|
_promptHeight
|
|
case 3
|
|
set -g fake_lean_time_format '%r'
|
|
_promptHeight
|
|
case r
|
|
_begin
|
|
case q
|
|
_quit
|
|
end
|
|
end
|
|
|
|
function _promptHeight
|
|
_title 'Prompt Height'
|
|
|
|
_option 1 'One line'
|
|
_displayPrompt prompt_height 1
|
|
|
|
_option 2 'Two lines'
|
|
_displayPrompt prompt_height 2
|
|
|
|
_displayRestartAndQuit
|
|
|
|
switch (_menu 'Choice' 1/2/r/q)
|
|
case 1
|
|
set -g prompt_height 1
|
|
_promptSpacing
|
|
case 2
|
|
set -g prompt_height 2
|
|
_promptConnection
|
|
case r
|
|
_begin
|
|
case q
|
|
_quit
|
|
end
|
|
end
|
|
|
|
function _promptConnection
|
|
_title 'Prompt Connection'
|
|
|
|
_option 1 'Disconnected'
|
|
_displayPrompt fake_lean_prompt_connection ' '
|
|
|
|
_option 2 'Dotted'
|
|
_displayPrompt fake_lean_prompt_connection '·'
|
|
|
|
_option 3 'Solid'
|
|
_displayPrompt fake_lean_prompt_connection '─'
|
|
|
|
_displayRestartAndQuit
|
|
|
|
switch (_menu 'Choice' 1/2/3/r/q)
|
|
case 1
|
|
set -g fake_lean_prompt_connection ' '
|
|
_promptSpacing
|
|
case 2
|
|
set -g fake_lean_prompt_connection '·'
|
|
_promptConnectionColor
|
|
case 3
|
|
set -g fake_lean_prompt_connection '─'
|
|
_promptConnectionColor
|
|
case r
|
|
_begin
|
|
case q
|
|
_quit
|
|
end
|
|
end
|
|
|
|
function _promptConnectionColor
|
|
_title 'Connection Color'
|
|
|
|
_option 1 'Lightest'
|
|
_displayPrompt fake_lean_prompt_connection_color 808080
|
|
|
|
_option 2 'Light'
|
|
_displayPrompt fake_lean_prompt_connection_color 6C6C6C
|
|
|
|
_option 3 'Dark'
|
|
_displayPrompt fake_lean_prompt_connection_color 585858
|
|
|
|
_option 4 'Darkest'
|
|
_displayPrompt fake_lean_prompt_connection_color 444444
|
|
|
|
_displayRestartAndQuit
|
|
|
|
switch (_menu 'Choice' 1/2/3/4/r/q)
|
|
case 1
|
|
set -g fake_lean_prompt_connection_color 808080
|
|
_promptSpacing
|
|
case 2
|
|
set -g fake_lean_prompt_connection_color 6C6C6C
|
|
_promptSpacing
|
|
case 3
|
|
set -g fake_lean_prompt_connection_color 585858
|
|
_promptSpacing
|
|
case 4
|
|
set -g fake_lean_prompt_connection_color 444444
|
|
_promptSpacing
|
|
case r
|
|
_begin
|
|
case q
|
|
_quit
|
|
end
|
|
end
|
|
|
|
function _promptSpacing
|
|
_title 'Prompt Spacing'
|
|
|
|
_option 1 'Compact'
|
|
_displayPrompt new_line true
|
|
echo -ne '\r\033[1A'
|
|
_displayPrompt new_line false
|
|
|
|
_option 2 'Sparse'
|
|
_displayPrompt new_line true
|
|
echo -ne '\r\033[1A'
|
|
_displayPrompt new_line true
|
|
|
|
_displayRestartAndQuit
|
|
|
|
switch (_menu 'Choice' 1/2/r/q)
|
|
case 1
|
|
set -g new_line false
|
|
_finish
|
|
case 2
|
|
set -g new_line true
|
|
_finish
|
|
case r
|
|
_begin
|
|
case q
|
|
_quit
|
|
end
|
|
end
|
|
|
|
function _assemblePrompt -a whichPrompt
|
|
set -g moduleDir "$__fish_config_dir/lean_theme/prompt_modules/$whichPrompt""_prompt"
|
|
|
|
if test "$whichPrompt" = 'fish'
|
|
set -g promptDir $fishPrompt
|
|
else
|
|
set -g promptDir $fakePrompt
|
|
end
|
|
|
|
echo -n >$promptDir
|
|
|
|
_addMod 1_initial
|
|
if test "$new_line" = 'true'
|
|
_addMod 2_newline
|
|
end
|
|
_addMod '3_'$prompt_height'Line'
|
|
_addMod 4_final
|
|
if test $prompt_height -eq 1
|
|
_addMod 5_rightPrompt
|
|
else
|
|
_addMod 5_rPromptNoColor
|
|
end
|
|
end
|
|
|
|
function _addMod -a file
|
|
cat "$moduleDir/$file.fish" >>$promptDir
|
|
printf '\n\n' >>$promptDir
|
|
end
|
|
|
|
function _title -a title
|
|
clear
|
|
set -l midCols (math $columns/2)
|
|
set -l midTitle (math (string length $title)/2)
|
|
|
|
for i in (seq (math $midCols-$midTitle))
|
|
echo -n ' '
|
|
end
|
|
set_color -o
|
|
echo $title
|
|
set_color normal
|
|
end
|
|
|
|
function _option -a symbol text
|
|
set_color -o
|
|
echo "($symbol) $text"
|
|
set_color normal
|
|
end
|
|
|
|
function _displayPrompt -a var_name var_value
|
|
set -g $var_name $var_value
|
|
|
|
_assemblePrompt fake
|
|
source $promptDir
|
|
fake_prompt
|
|
|
|
printf '\n\n'
|
|
end
|
|
|
|
function _displayRestartAndQuit
|
|
echo -e '(r) Restart from the beginning\n'
|
|
echo -e '(q) Quit and do nothing\n'
|
|
end
|
|
|
|
function _quit
|
|
functions -e fish_right_prompt
|
|
source $fishPrompt
|
|
clear
|
|
end
|
|
|
|
function _finish
|
|
_title 'Overwrite fish_prompt?'
|
|
|
|
_option y 'Yes'
|
|
printf '\n\n'
|
|
|
|
_option n 'No'
|
|
printf '\n\n'
|
|
|
|
switch (_menu 'Choice' y/n)
|
|
case y
|
|
_assemblePrompt fish
|
|
set -U lean_prompt_connection_icon $fake_lean_prompt_connection
|
|
set -U lean_prompt_connection_color $fake_lean_prompt_connection_color
|
|
if test $fake_lean_time_format = ''
|
|
if contains 'time' $lean_right_prompt_items
|
|
set -e lean_right_prompt_items[(contains -i 'time' $lean_right_prompt_items)]
|
|
end
|
|
set -e lean_time_format
|
|
else
|
|
set -a lean_right_prompt_items 'time'
|
|
set -U lean_time_format $fake_lean_time_format
|
|
end
|
|
case n
|
|
end
|
|
|
|
_quit
|
|
end
|
|
|
|
function _menu -a question options
|
|
set -l optionList (string split '/' $options)
|
|
set -l bold (set_color -o)
|
|
set -l norm (set_color normal)
|
|
|
|
while true
|
|
read -P $bold"$question [$options] "$norm input
|
|
|
|
if contains $input $optionList
|
|
echo $input
|
|
break
|
|
end
|
|
end
|
|
end |