diff options
author | Fabian Homborg <FHomborg@gmail.com> | 2016-03-01 20:22:21 +0100 |
---|---|---|
committer | Kurtis Rader <krader@skepticism.us> | 2016-03-02 10:59:12 -0800 |
commit | 0e8a8a7c8023e05792b8b1d32ddbe7bcf2ea3549 (patch) | |
tree | fe2e30f064215b870a9367575046bfc919c8e11b /share/functions/abbr.fish | |
parent | fbd53f2da1af69058b16320265364257a11571df (diff) |
Migrate abbrs from =-separated to space-separated
We silently upgrade existing abbreviations and change the separator when
saving.
This does not yet warn when the user is using the old syntax.
Resolves #2051
Diffstat (limited to 'share/functions/abbr.fish')
-rw-r--r-- | share/functions/abbr.fish | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/share/functions/abbr.fish b/share/functions/abbr.fish index 53465eb6..bb50ec02 100644 --- a/share/functions/abbr.fish +++ b/share/functions/abbr.fish @@ -72,8 +72,12 @@ function abbr --description "Manage abbreviations" switch $mode case 'add' + # Convert from old "key=value" to new "key value" syntax + if string match -qr '^[^ ]+=' -- $mode_arg + set mode_arg (string replace "=" " " -- $mode_arg) + end + # Bail out early if the exact abbr is already in - # This depends on the separator staying the same, but that's the common case (config.fish) contains -- $mode_arg $fish_user_abbreviations; and return 0 set -l key set -l value @@ -141,12 +145,8 @@ function __fish_abbr_get_by_key # Going through all entries is still quicker than calling `seq` set -l keys for kv in $fish_user_abbreviations - if string match -qr '^[^ ]+=' -- $kv - # No need for bounds-checking because we already matched before - set keys $keys (string split "=" -m 1 -- $kv)[1] - else if string match -qr '^[^ ]+ .*' -- $kv - set keys $keys (string split " " -m 1 -- $kv)[1] - end + # If this does not match, we have screwed up before and the error should be reported + set keys $keys (string split " " -m 1 -- $kv)[1] end if set -l idx (contains -i -- $argv[1] $keys) echo $idx @@ -156,11 +156,6 @@ function __fish_abbr_get_by_key end function __fish_abbr_split -a input - if string match -qr '^[^ ]+=' -- $input - string split "=" -m 1 -- $input - else if string match -qr '^[^ ]+ .*' -- $input - string split " " -m 1 -- $input - else - echo $input - end + # Because we always save space-separated, we can be certain that this will match + string split " " -m 1 -- $input end |