diff --git a/init/completions/set.fish b/init/completions/set.fish index f7ddbf3da..4ca201409 100644 --- a/init/completions/set.fish +++ b/init/completions/set.fish @@ -1,14 +1,22 @@ +# +# Completions for the 'set' builtin +# + +# +# We depend on set_color completions for color definitions +# complete -y set_color -complete -c set -s e -l erase -d (_ "Erase variable") -complete -c set -s x -l export -d (_ "Export variable to subprocess") -complete -c set -s u -l unexport -d (_ "Do not export variable to subprocess") -complete -c set -s g -l global -d (_ "Make variable scope global") -complete -c set -s l -l local -d (_ "Make variable scope local") -complete -c set -s U -l universal -d (_ "Make variable scope universal, i.e. share variable with all the users fish processes on this computer") -complete -c set -s q -l query -d (_ "Test if variable is defined") -complete -c set -s h -l help -d (_ "Display help and exit") +# +# All locale variables used by set completions +# + +set -g __fish_locale_vars LANG LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME + +# +# Verious helper functions +# function __fish_set_is_first -d 'Test if no non-switch argument has been specified yet' set -- cmd (commandline -poc) @@ -24,11 +32,9 @@ function __fish_set_is_first -d 'Test if no non-switch argument has been specifi return 0 end -complete -c set -n '__fish_set_is_first' -x -a "(set|sed -e 's/ /\tVariable: /')" - function __fish_set_is_color -d 'Test if We are specifying a color value for the prompt' - set -- cmd (commandline -poc) - set -e -- cmd[1] + set cmd (commandline -poc) + set -e cmd[1] for i in $cmd switch $i @@ -41,6 +47,46 @@ function __fish_set_is_color -d 'Test if We are specifying a color value for the return 1 end end + return 1 end +function __fish_set_is_locale -d 'Test if We are specifying a locale value for the prompt' + set cmd (commandline -poc) + set -e cmd[1] + for i in $cmd + switch $i + + case $__fish_locale_vars + return 0 + + case '-*' + + case '*' + return 1 + end + end + return 1 +end + +# +# Completions +# + +complete -c set -s e -l erase -d (_ "Erase variable") +complete -c set -s x -l export -d (_ "Export variable to subprocess") +complete -c set -s u -l unexport -d (_ "Do not export variable to subprocess") +complete -c set -s g -l global -d (_ "Make variable scope global") +complete -c set -s l -l local -d (_ "Make variable scope local") +complete -c set -s U -l universal -d (_ "Make variable scope universal, i.e. share variable with all the users fish processes on this computer") +complete -c set -s q -l query -d (_ "Test if variable is defined") +complete -c set -s h -l help -d (_ "Display help and exit") + +# Complete using preexisting variables +complete -c set -n '__fish_set_is_first' -x -a "(set|sed -e 's/ /\tVariable: /')" + +# Color completions complete -c set -n '__fish_set_is_color' -x -a '(set_color --print-colors)' -d (_ Color) + +# Locale completions +complete -c set -n '__fish_set_is_first' -x -a '$__fish_locale_vars' -d 'Locale variable' +complete -c set -n '__fish_set_is_locale' -x -a '(locale -a)' -d (_ Locale)