zsh-completion: fix completion of --user services

By the time __systemctl is called, --user/--system are shifted out of
`words' by _arguments. This patch queries the array sooner.

In the case that both --user and --system are on the line when compsys runs,
_sys_service_mgr is set to the latter. Which is seemingly how systemctl behaves.

If neither are on the line, --system is set; for system services to be completed.
This commit is contained in:
Eric Cook 2015-05-18 18:45:31 -04:00 committed by Harald Hoyer
parent 9530e0d023
commit 68c4f6d406

View file

@ -93,9 +93,7 @@
__systemctl()
{
local -a _modes
_modes=("--user" "--system")
systemctl ${words:*_modes} --full --no-legend --no-pager "$@"
systemctl $_sys_service_mgr --full --no-legend --no-pager "$@"
}
@ -355,6 +353,8 @@ _job_modes() {
_values -s , "${_modes[@]}"
}
local -a _modes; _modes=("--user" "--system")
local _sys_service_mgr=${${words:*_modes}[(R)(${(j.|.)_modes})]:---system}
_arguments -s \
{-h,--help}'[Show help]' \
'--version[Show package version]' \