#compdef stg typeset -a subcmds subcmds=( ${${${(M)${(f)"$(stg help 2> /dev/null)"}## *}# }/#(#b)([^[:space:]]##)[[:space:]]##(*)/$match[1]:$match[2]} ) local curcontext="$curcontext" local subcmd local ret=1 if (( CURRENT == 2 )); then _describe -t commands 'stgit command' subcmds && ret=0 else shift words (( CURRENT-- )) subcmd="$words[1]" curcontext="${curcontext%:*}-${subcmd}:" case $subcmd in (push) _wanted -V "unapplied patches" expl "patch" \ compadd ${${(M)${(f)"$(stg series 2> /dev/null)"}##- *}#- } \ && ret=0 ;; (pop) _wanted -V "applied patches" expl "patch" \ compadd ${${(M)${(f)"$(stg series 2> /dev/null)"}##[+>] *}#[+>] } \ && ret=0 ;; (edit|files|goto|rename|log|float|delete|sink|mail|sync|show|pick|hide) _wanted -V "patches" expl "patch" \ compadd $(stg series --noprefix 2> /dev/null) \ && ret=0 ;; (*) _files ;; esac fi return ret