summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2011-03-21 14:11:18 +1000
committerDan McGee <dan@archlinux.org>2011-03-21 07:40:27 -0500
commitc3e72e11b643b2a24608e1936763fb148613e464 (patch)
tree8278776785ae2de8020a4a4d4f9261d26dacc756 /contrib
parentfd3acff5e6b587c0fab04c2c3a34a1285e398a11 (diff)
downloadpacman-c3e72e11b643b2a24608e1936763fb148613e464.tar.xz
Fix zsh completion
Fixes completion for "pacman -S <tab>" and "pacman -S repo/<tab>" Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'contrib')
-rw-r--r--contrib/zsh_completion.in23
1 files changed, 10 insertions, 13 deletions
diff --git a/contrib/zsh_completion.in b/contrib/zsh_completion.in
index 16919134..fded4144 100644
--- a/contrib/zsh_completion.in
+++ b/contrib/zsh_completion.in
@@ -221,23 +221,20 @@ _pacman_completions_all_groups() {
# these can be specified as either 'package' or 'repository/package'
_pacman_completions_all_packages() {
local -a cmd packages repositories packages_long
+ _pacman_get_command
+
+ if compset -P1 '*/*'; then
+ packages=( $(_call_program packages $cmd[@] -Sql ${words[CURRENT]%/*}) )
+ typeset -U packages
+ _wanted repo_packages expl "repository/package" compadd ${(@)packages}
+ else
+ packages=( $(_call_program packages $cmd[@] -Sql) )
+ typeset -U packages
+ _wanted packages expl "packages" compadd - "${(@)packages}"
- repositories=(${(o)${${${(M)${(f)"$(<@sysconfdir@/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})
- typeset -U repositories
- packages_long=(@localstatedir@/lib/pacman/sync/${^repositories}/*(/))
- packages=(${(o)${${packages_long#@localstatedir@/lib/pacman/sync/}#*/}%-*-*} )
- typeset -U packages
- _wanted packages expl "packages" compadd - "${(@)packages}"
- if [[ $PREFIX != */* ]] ; then
repositories=(${(o)${${${(M)${(f)"$(<@sysconfdir@/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})
typeset -U repositories
_wanted repo_packages expl "repository/package" compadd -S "/" $repositories
- else
- compset -P '*/'
- packages_long=(@localstatedir@/lib/pacman/sync/$IPREFIX*(/))
- packages=(${(o)${${packages_long#@localstatedir@/lib/pacman/sync/}#*/}%-*-*} )
- typeset -U packages
- _wanted repo_packages expl "repository/package" compadd ${(@)packages}
fi
}