Fix zsh completion for "localectl set-locale"

When running:

    $ localectl set-locale LC_MESSAGES=<TAB>

One is prompted with a list of locale fields instead of the list of
valid locales. This is because by calling "compset -P1 '*='", we modify
the $PREFIX special parameter before testing whether it contains an
equal sign. Therefore

    if [[ -prefix 1 *\= ]]

is always false, and we always suggest a list of locale fields to the
user.

Fixes: #27955
This commit is contained in:
Cyril Roelandt 2023-06-07 14:33:19 +02:00 committed by Luca Boccassi
parent 0fb19b9469
commit 3c6fefd879

View file

@ -12,8 +12,8 @@ _localectl_set-locale() {
local expl suf
_locales=( ${(f)"$(_call_program locales "$service" list-locales)"} )
compset -P1 '*='
if [[ -prefix 1 *\= ]]; then
compset -P1 '*='
local conf=${PREFIX%%\=*}
_wanted locales expl "locales configs" \
_combination localeconfs confs=$conf locales "$@" -