fix(config-settings): list values accept comma and/or whitespace separators
Previously list rows (Extra secret, OK codes) split on spaces only, so 'KOPIA, TEST' produced the malformed token 'KOPIA,'. Collapse any run of commas/whitespace to a single space before splitting, so 'A,B', 'A, B' and 'A B' all yield the same entries.
This commit is contained in:
+3
-1
@@ -1378,7 +1378,9 @@ Add -i (interactive confirmation) to destructive commands:
|
|||||||
Toggle rows use ← → (or h/l) along an OFF ← DEFAULT → ON scale; DEFAULT
|
Toggle rows use ← → (or h/l) along an OFF ← DEFAULT → ON scale; DEFAULT
|
||||||
erases the variable so the master switch / built-in default applies. Value
|
erases the variable so the master switch / built-in default applies. Value
|
||||||
rows (the path/int/list settings on the Sponge and Paths pages) use Enter to
|
rows (the path/int/list settings on the Sponge and Paths pages) use Enter to
|
||||||
edit inline; ← / h clears the value back to its default. Changes apply
|
edit inline; ← / h clears the value back to its default. List rows (e.g.
|
||||||
|
Extra secret, OK codes) accept values separated by commas and/or whitespace
|
||||||
|
— "A, B", "A,B" and "A B" all yield the same two entries. Changes apply
|
||||||
immediately. Always available regardless of the __fish_config_opinionated
|
immediately. Always available regardless of the __fish_config_opinionated
|
||||||
master state.
|
master state.
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,11 @@ function __config_settings_set_value
|
|||||||
else
|
else
|
||||||
switch $type
|
switch $type
|
||||||
case list
|
case list
|
||||||
set -U -- $varname (string split -n ' ' -- $value) 2>/dev/null
|
# Accept commas and/or whitespace as separators: collapse any run
|
||||||
|
# of them to a single space, then split (dropping empties). So
|
||||||
|
# "A,B", "A, B", "A B" and "A B" all yield the same two tokens.
|
||||||
|
set -U -- $varname \
|
||||||
|
(string split -n ' ' -- (string replace -ra '[,\s]+' ' ' -- $value)) 2>/dev/null
|
||||||
case '*'
|
case '*'
|
||||||
# -- (before the name) guards typed input that begins with a dash
|
# -- (before the name) guards typed input that begins with a dash
|
||||||
set -U -- $varname $value 2>/dev/null
|
set -U -- $varname $value 2>/dev/null
|
||||||
|
|||||||
Reference in New Issue
Block a user