aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/functions/abbr.fish
diff options
context:
space:
mode:
authorGravatar Fabian Homborg <FHomborg@gmail.com>2016-03-01 20:22:21 +0100
committerGravatar Kurtis Rader <krader@skepticism.us>2016-03-02 10:59:12 -0800
commit0e8a8a7c8023e05792b8b1d32ddbe7bcf2ea3549 (patch)
treefe2e30f064215b870a9367575046bfc919c8e11b /share/functions/abbr.fish
parentfbd53f2da1af69058b16320265364257a11571df (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.fish23
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