feat(config): add sub-category granularity to opinionated components #107
@@ -146,24 +146,34 @@ function config-settings --description 'Interactive TUI for managing fish config
|
|||||||
trap 'printf "\e[?25h"; set -g __config_settings_exit 1' INT
|
trap 'printf "\e[?25h"; set -g __config_settings_exit 1' INT
|
||||||
|
|
||||||
# ── Draw dispatch (page 0/1 = toggle table; 2/3 = value page) ─────────
|
# ── Draw dispatch (page 0/1 = toggle table; 2/3 = value page) ─────────
|
||||||
|
# Records the actual line count of whatever it just drew into panel_h,
|
||||||
|
# so every erase (redraw loop, inline editor, final cleanup) matches
|
||||||
|
# reality -- the sub-category page is n+7 lines (2-6 sub-categories:
|
||||||
|
# 9-13 lines), never the category list's fixed 16.
|
||||||
function __cs_dispatch_draw --no-scope-shadowing
|
function __cs_dispatch_draw --no-scope-shadowing
|
||||||
switch $cur_page
|
switch $cur_page
|
||||||
case 0
|
case 0
|
||||||
if test $in_subcat -eq 1
|
if test $in_subcat -eq 1
|
||||||
__config_settings_draw_subcat $subcat_row universal $toggle_vars[(math $cur_row + 1)]
|
__config_settings_draw_subcat $subcat_row universal $toggle_vars[(math $cur_row + 1)]
|
||||||
|
set panel_h (math 7 + (count (__config_settings_subcats $toggle_vars[(math $cur_row + 1)])))
|
||||||
else
|
else
|
||||||
__config_settings_draw $cur_row universal $toggle_vars
|
__config_settings_draw $cur_row universal $toggle_vars
|
||||||
|
set panel_h 16
|
||||||
end
|
end
|
||||||
case 1
|
case 1
|
||||||
if test $in_subcat -eq 1
|
if test $in_subcat -eq 1
|
||||||
__config_settings_draw_subcat $subcat_row session $toggle_vars[(math $cur_row + 1)]
|
__config_settings_draw_subcat $subcat_row session $toggle_vars[(math $cur_row + 1)]
|
||||||
|
set panel_h (math 7 + (count (__config_settings_subcats $toggle_vars[(math $cur_row + 1)])))
|
||||||
else
|
else
|
||||||
__config_settings_draw $cur_row session $toggle_vars
|
__config_settings_draw $cur_row session $toggle_vars
|
||||||
|
set panel_h 16
|
||||||
end
|
end
|
||||||
case 2
|
case 2
|
||||||
__config_settings_draw_value $cur_row sponge
|
__config_settings_draw_value $cur_row sponge
|
||||||
|
set panel_h 16
|
||||||
case 3
|
case 3
|
||||||
__config_settings_draw_value $cur_row paths
|
__config_settings_draw_value $cur_row paths
|
||||||
|
set panel_h 16
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
__cs_dispatch_draw
|
__cs_dispatch_draw
|
||||||
@@ -219,11 +229,16 @@ function config-settings --description 'Interactive TUI for managing fish config
|
|||||||
# one but sitting on its row 0 (the category's own
|
# one but sitting on its row 0 (the category's own
|
||||||
# toggle). Only row >= 1 of a sub-category page
|
# toggle). Only row >= 1 of a sub-category page
|
||||||
# resolves to a different, sub-category variable.
|
# resolves to a different, sub-category variable.
|
||||||
set -l varname $toggle_vars[(math $cur_row + 1)]
|
# Hoist the category variable into a plain local first --
|
||||||
|
# fish cannot expand a command-substitution index
|
||||||
|
# ("$toggle_vars[(math ...)]") inside a quoted string
|
||||||
|
# (same reason the down/j case above hoists $pidx).
|
||||||
|
set -l cvar $toggle_vars[(math $cur_row + 1)]
|
||||||
|
set -l varname $cvar
|
||||||
if test $in_subcat -eq 1 -a $subcat_row -ne 0
|
if test $in_subcat -eq 1 -a $subcat_row -ne 0
|
||||||
set -l rows (__config_settings_subcats $toggle_vars[(math $cur_row + 1)])
|
set -l rows (__config_settings_subcats $cvar)
|
||||||
set -l fields (string split -- \t $rows[$subcat_row])
|
set -l fields (string split -- \t $rows[$subcat_row])
|
||||||
set varname "$toggle_vars[(math $cur_row + 1)]"_(string replace -a -- '-' '_' $fields[1])
|
set varname "$cvar"_(string replace -a -- '-' '_' $fields[1])
|
||||||
end
|
end
|
||||||
set -l cur_val (__config_settings_get_val $varname $scope)
|
set -l cur_val (__config_settings_get_val $varname $scope)
|
||||||
set -l next_val on
|
set -l next_val on
|
||||||
@@ -250,15 +265,16 @@ function config-settings --description 'Interactive TUI for managing fish config
|
|||||||
if test $cur_page -le 1
|
if test $cur_page -le 1
|
||||||
set -l scope universal
|
set -l scope universal
|
||||||
test $cur_page -eq 1; and set scope session
|
test $cur_page -eq 1; and set scope session
|
||||||
# Same varname resolution as the right/l case above:
|
# Same varname resolution as the right/l case above
|
||||||
# row 0 (or not in a sub-category page) -> the category
|
# (hoisted local -- see the comment there for why the
|
||||||
# variable; row >= 1 of a sub-category page -> the
|
# command-substitution index can't be inlined into the
|
||||||
# selected sub-category variable.
|
# quoted string directly).
|
||||||
set -l varname $toggle_vars[(math $cur_row + 1)]
|
set -l cvar $toggle_vars[(math $cur_row + 1)]
|
||||||
|
set -l varname $cvar
|
||||||
if test $in_subcat -eq 1 -a $subcat_row -ne 0
|
if test $in_subcat -eq 1 -a $subcat_row -ne 0
|
||||||
set -l rows (__config_settings_subcats $toggle_vars[(math $cur_row + 1)])
|
set -l rows (__config_settings_subcats $cvar)
|
||||||
set -l fields (string split -- \t $rows[$subcat_row])
|
set -l fields (string split -- \t $rows[$subcat_row])
|
||||||
set varname "$toggle_vars[(math $cur_row + 1)]"_(string replace -a -- '-' '_' $fields[1])
|
set varname "$cvar"_(string replace -a -- '-' '_' $fields[1])
|
||||||
end
|
end
|
||||||
set -l cur_val (__config_settings_get_val $varname $scope)
|
set -l cur_val (__config_settings_get_val $varname $scope)
|
||||||
set -l next_val off
|
set -l next_val off
|
||||||
|
|||||||
Reference in New Issue
Block a user