#compdef quilt _arguments \ '--trace' \ '--quiltrc:config file:_files' \ '--version' \ ':quilt command:(add files import previous setup annotate fold mail push snapshot applied fork new refresh top delete graph next remove unapplied diff grep patches rename upgrade edit header pop series)' \ '*::subcmd:->subcmd' && return 0 case "$state" in (subcmd) case "$words[1]" in (applied|delete|files|graph|header|next|previous|refresh|unapplied) _wanted -V 'patches' expl 'patch' compadd ${(f)"$(quilt series)"} ;; (push) tmp=$(quilt unapplied 2>&1) if [[ "$tmp[1,40]" != "File series fully applied, ends at patch" ]]; then _wanted -V 'unapplied patches' expl 'patch' compadd ${(f)"$(quilt unapplied)"} fi ;; (pop) tmp=$(quilt applied 2>&1) if [[ "$tmp" != "No patches applied" ]]; then _wanted -V 'applied patches' expl 'patch' compadd ${(f)"$(quilt applied)"} fi ;; (*) _files ;; esac ;; esac