#compdef vim-addons local state line cmds ret=1 typeset -A opt_args _arguments -C \ {-q,--query}'[be quiet and make the output more parseable]' \ {-r,--registry-dir}'[set the registry directory]' \ {-s,--source-dir}'[set addon source directory]' \ {-t,--target-dir}'[set addon target directory]' \ {-v,--verbose}'[increase verbosity]' \ {-y,--system-dir}'[set system-wide target directory]' \ {-h,--help}'[help]' \ {-w,--system-wide}'[set target directory to the system-wide one (overrides -t)]' \ '1: :->cmds' \ '*: :->args' && ret=0 case $state in cmds) cmds=( 'install:install the specified addon' 'remove:remove the specified addon' 'list:list available addons in registry' 'status:list the status of addons' 'disable:disable the specified addons' 'amend:under the effects of the previous disable' 'files:list the files composing the specified addon' 'show:display detailed information about the specified addon' ) _describe -t commands 'vim-addons command' cmds && ret=0 ;; args) case $line[1] in install) _wanted addon expl 'addon' compadd $(command vim-addons -q | awk '$2 == "removed" { print $1 }') && ret=0 ;; amend) _wanted addon expl 'addon' compadd $(command vim-addons -q | awk '$2 == "disabled" { print $1 }') && ret=0 ;; remove) _wanted addon expl 'addon' compadd $(command vim-addons -q | awk '$2 ~ /disabled|installed/ { print $1 }') && ret=0 ;; files|status|disable|show) _wanted addon expl 'addon' compadd $(command vim-addons list) && ret=0 ;; esac ;; esac return ret