diff --git a/completions/zsh b/completions/zsh index 55f089694..255689a9b 100644 --- a/completions/zsh +++ b/completions/zsh @@ -184,403 +184,380 @@ _pacman_opts_sync_modifiers=( # handles --help subcommand _pacman_action_help() { -_arguments -s : "$_pacman_opts_commands[@]" + _arguments -s : \ + "$_pacman_opts_commands[@]" } # handles cases where no subcommand has yet been given _pacman_action_none() { -_arguments -s : "$_pacman_opts_commands[@]" + _arguments -s : \ + "$_pacman_opts_commands[@]" } # handles --query subcommand _pacman_action_query() { -local context state line -typeset -A opt_args - -case $state in -query_file) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_modifiers[@]" '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"' - - - -query_group) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_modifiers[@]" '*:groups:_pacman_completions_installed_groups' - - - -query_owner) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_modifiers[@]" '*:file:_files' - - - -query_search) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_modifiers[@]" '*:search text: ' - - - -*) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_actions[@]" "$_pacman_opts_query_modifiers[@]" '*:package:_pacman_completions_installed_packages' - - - -esac + local context state line + typeset -A opt_args + + case $state in + query_file) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"' + ;; + query_group) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:groups:_pacman_completions_installed_groups' + ;; + query_owner) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:file:_files' + ;; + query_search) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:search text: ' + ;; + *) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_actions[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:package:_pacman_completions_installed_packages' + ;; + esac } # handles --remove subcommand _pacman_action_remove() { -_arguments -s : '(--remove -R)'{-R,--remove} "$_pacman_opts_common[@]" "$_pacman_opts_remove[@]" + _arguments -s : \ + '(--remove -R)'{-R,--remove} \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_remove[@]" } # handles --database subcommand _pacman_action_database() { -_arguments -s : '(--database -D)'{-D,--database} "$_pacman_opts_common[@]" "$_pacman_opts_database[@]" + _arguments -s : \ + '(--database -D)'{-D,--database} \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_database[@]" } # handles --files subcommand _pacman_action_files() { -_arguments -s : '(--files -F)'{-F,--files} "$_pacman_opts_common[@]" "$_pacman_opts_files[@]" + _arguments -s : \ + '(--files -F)'{-F,--files} \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_files[@]" } _pacman_action_deptest () { -_arguments -s : '(--deptest)-T' "$_pacman_opts_common[@]" ":packages:_pacman_all_packages" + _arguments -s : \ + '(--deptest)-T' \ + "$_pacman_opts_common[@]" \ + ":packages:_pacman_all_packages" } # handles --sync subcommand _pacman_action_sync() { -local context state line -typeset -A opt_args -if (( $+words[(r)--clean] )) - then + local context state line + typeset -A opt_args + if (( $+words[(r)--clean] )); then state=sync_clean - elif (( $+words[(r)--groups] )) - then + elif (( $+words[(r)--groups] )); then state=sync_group - elif (( $+words[(r)--search] )) - then + elif (( $+words[(r)--search] )); then state=sync_search - fi - -case $state in -sync_clean) -_arguments -s : {\*-c,\*--clean}'[Remove old packages from cache]' "$_pacman_opts_common[@]" "$_pacman_opts_sync_modifiers[@]" - - - -sync_group) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_sync_modifiers[@]" '(-g --group)'{-g,--groups} '*:package group:_pacman_completions_all_groups' - - - -sync_search) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_sync_modifiers[@]" '*:search text: ' - - - -*) -_arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_sync_actions[@]" "$_pacman_opts_sync_modifiers[@]" '*:package:_pacman_completions_all_packages' - - - -esac + fi + + case $state in + sync_clean) + _arguments -s : \ + {\*-c,\*--clean}'[Remove old packages from cache]' \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_sync_modifiers[@]" + ;; + sync_group) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_sync_modifiers[@]" \ + '(-g --group)'{-g,--groups} \ + '*:package group:_pacman_completions_all_groups' + ;; + sync_search) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_sync_modifiers[@]" \ + '*:search text: ' + ;; + *) + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_sync_actions[@]" \ + "$_pacman_opts_sync_modifiers[@]" \ + '*:package:_pacman_completions_all_packages' + ;; + esac } # handles --upgrade subcommand _pacman_action_upgrade() { -_arguments -s : '(-U --upgrade)'{-U,--upgrade} "$_pacman_opts_common[@]" "$_pacman_opts_pkgfile[@]" + _arguments -s : \ + '(-U --upgrade)'{-U,--upgrade} \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_pkgfile[@]" } # handles --version subcommand _pacman_action_version() { -# no further arguments -return 0 + # no further arguments + return 0 } # provides completions for package groups _pacman_completions_all_groups() { -local -a cmd groups -_pacman_get_command -groups=( $(_call_program groups $cmd[@] -Sg) ) -typeset -U groups + local -a cmd groups + _pacman_get_command + groups=( $(_call_program groups $cmd[@] -Sg) ) + typeset -U groups -if [[ ${words[CURRENT-1]} == '--ignoregroup' ]] - then + if [[ ${words[CURRENT-1]} == '--ignoregroup' ]]; then _sequence compadd -S ',' "$@" -a groups -else + else compadd "$@" -a groups - fi - } - - # provides completions for packages available from repositories - # these can be specified as either 'package' or 'repository/package' - _pacman_completions_all_packages() { - local -a seq sep cmd packages repositories packages_long - - if [[ ${words[CURRENT-1]} == '--ignore' ]] - then - seq='_sequence' - sep=(-S ',') - else - seq= - sep=() - fi - - if compset -P1 '*/*' - then - packages=( $(_call_program packages yay -Pc ${words[CURRENT]%/*}) ) - typeset -U packages - ${seq} _wanted repo_packages expl "repository/package" compadd ${sep[@]} ${(@)packages} - else - packages=( $(_call_program packages yay -Pc ) ) - typeset -U packages - ${seq} _wanted packages expl "packages" compadd ${sep[@]} - "${(@)packages}" - - repositories=(${(o)${${${(M)${(f)"$(/dev/null") - integer i - for (( i = 2; i < CURRENT - 1; i++ )) -; do -if [[ ${words[i]} = "--config" | -| ${words[i]} = "--root" ]] -then -cmd+=( ${words[i,i+1]} ) -fi -done + fi } -# main dispatcher -_pacman_zsh_comp() { -local -a args cmds - -local tmp -args=( ${${${(M)words:#-*}#-}:#-*} ) -for tmp in $words - do - cmds+=("${${_pacman_opts_commands[(r)*$tmp\[*]%%\[*}#*\)}") - done -case $args in #$words[2] in -h*) -if (( ${(c)#args} <= 1 && ${(w)#cmds} <= 1 )) - then - _pacman_action_help -else - _message "no more arguments" - fi +# provides completions for packages available from repositories +# these can be specified as either 'package' or 'repository/package' +_pacman_completions_all_packages() { + local -a seq sep cmd packages repositories packages_long + + if [[ ${words[CURRENT-1]} == '--ignore' ]]; then + seq='_sequence' + sep=(-S ',') + else + seq= + sep=() + fi + + if compset -P1 '*/*'; then + packages=( $(_call_program packages yay -Pc ${words[CURRENT]%/*}) ) + typeset -U packages + ${seq} _wanted repo_packages expl "repository/package" compadd ${sep[@]} ${(@)packages} + else + packages=( $(_call_program packages yay -Pc ) ) + typeset -U packages + ${seq} _wanted packages expl "packages" compadd ${sep[@]} - "${(@)packages}" + + repositories=(${(o)${${${(M)${(f)"$(/dev/null") + integer i + for (( i = 2; i < CURRENT - 1; i++ )); do + if [[ ${words[i]} = "--config" || ${words[i]} = "--root" ]]; then + cmd+=( ${words[i,i+1]} ) + fi + done +} +# main dispatcher +_pacman_zsh_comp() { + local -a args cmds; + local tmp + args=( ${${${(M)words:#-*}#-}:#-*} ) + for tmp in $words; do + cmds+=("${${_pacman_opts_commands[(r)*$tmp\[*]%%\[*}#*\)}") + done + case $args in #$words[2] in + h*) + if (( ${(c)#args} <= 1 && ${(w)#cmds} <= 1 )); then + _pacman_action_help + else + _message "no more arguments" + fi + ;; + *h*) + _message "no more arguments" + ;; D*) - _pacman_action_database - - - + _pacman_action_database + ;; F*) - _pacman_action_files - - - + _pacman_action_files + ;; Q*g*) # ipkg groups - _arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_modifiers[@]" '*:groups:_pacman_completions_installed_groups' - - - + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:groups:_pacman_completions_installed_groups' + ;; Q*o*) # file - _arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_modifiers[@]" '*:package file:_files' - - - + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:package file:_files' + ;; Q*p*) # file *.pkg.tar* - _arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_query_modifiers[@]" '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"' - - - + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_query_modifiers[@]" \ + '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"' + ;; T*) - _pacman_action_deptest - - - + _pacman_action_deptest + ;; Q*) - _pacman_action_query - - - + _pacman_action_query + ;; P*) - _arguments -s : "$_pacman_opts_print_modifiers[@]" - - - + _arguments -s : \ + "$_pacman_opts_print_modifiers[@]" + ;; R*) - _pacman_action_remove - - - + _pacman_action_remove + ;; S*c*) # no completion - _arguments -s : '(-c --clean)'{\*-c,\*--clean}'[Remove all files from the cache]' "$_pacman_opts_common[@]" - - - + _arguments -s : \ + '(-c --clean)'{\*-c,\*--clean}'[Remove all files from the cache]' \ + "$_pacman_opts_common[@]" + ;; S*l*) # repos - _arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_sync_modifiers[@]" '*:package repo:_pacman_completions_repositories' - - + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_sync_modifiers[@]" \ + '*:package repo:_pacman_completions_repositories' \ + ;; S*g*) # pkg groups - _arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_sync_modifiers[@]" '*:package group:_pacman_completions_all_groups' - - - + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_sync_modifiers[@]" \ + '*:package group:_pacman_completions_all_groups' + ;; S*s*) - _arguments -s : "$_pacman_opts_common[@]" "$_pacman_opts_sync_modifiers[@]" '*:search text: ' - - - + _arguments -s : \ + "$_pacman_opts_common[@]" \ + "$_pacman_opts_sync_modifiers[@]" \ + '*:search text: ' + ;; S*) - _pacman_action_sync - - - + _pacman_action_sync + ;; T*) - _arguments -s : '-T' "$_pacman_opts_common[@]" ":packages:_pacman_all_packages" - - - + _arguments -s : \ + '-T' \ + "$_pacman_opts_common[@]" \ + ":packages:_pacman_all_packages" + ;; U*) - _pacman_action_upgrade - - - + _pacman_action_upgrade + ;; V*) - _pacman_action_version - - - + _pacman_action_version + ;; Y*) - _arguments -s : "$_pacman_opts_yay_modifiers[@]" - - - + _arguments -s : \ + "$_pacman_opts_yay_modifiers[@]" + ;; *) -case ${(M)words:#--*} in -*--help*) -if (( ${(w)#cmds} == 1 )) - then - _pacman_action_help -else - return 0 - - fi - - - - *--sync*) - _pacman_action_sync - - - - *--query*) - _pacman_action_query - - - - *--remove*) - _pacman_action_remove - - - - *--deptest*) - _pacman_action_deptest - - - - *--database*) - _pacman_action_database - - - - *--files*) - _pacman_action_files - - - - *--version*) - _pacman_action_version - - - - *--upgrade*) - _pacman_action_upgrade - - - + case ${(M)words:#--*} in + *--help*) + if (( ${(w)#cmds} == 1 )); then + _pacman_action_help + else + return 0; + fi + ;; + *--sync*) + _pacman_action_sync + ;; + *--query*) + _pacman_action_query + ;; + *--remove*) + _pacman_action_remove + ;; + *--deptest*) + _pacman_action_deptest + ;; + *--database*) + _pacman_action_database + ;; + *--files*) + _pacman_action_files + ;; + *--version*) + _pacman_action_version + ;; + *--upgrade*) + _pacman_action_upgrade + ;; + *) + _pacman_action_none + ;; + esac + ;; + esac +} +_pacman_comp() { + case "$service" in + yay) + _pacman_zsh_comp "$@" + ;; *) - _pacman_action_none - - - - esac - - - - esac - } - _pacman_comp() { -case "$service" in -yay) -_pacman_zsh_comp "$@" - - - -*) -_message "Error" - - - -esac + _message "Error" + ;; + esac } _pacman_comp "$@"