mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef stg
 | |
| 
 | |
| typeset -a subcmds
 | |
| 
 | |
| subcmds=( ${${${(M)${(f)"$(stg help 2> /dev/null)"}## *}#  }/#(#b)([^[:space:]]##)[[:space:]]##(*)/$match[1]:$match[2]} )
 | |
| 
 | |
| local curcontext="$curcontext" expl
 | |
| 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|squash)
 | |
|       _wanted -V patches expl "patch" \
 | |
| 	compadd $(stg series --noprefix 2> /dev/null) \
 | |
| 		&& ret=0
 | |
|     ;;
 | |
|     (ref*)
 | |
|       last_word="$words[$CURRENT-1]"
 | |
|       refresh_patch_options=( -p --patch )
 | |
|       if [[ -n ${refresh_patch_options[(r)$last_word]} ]]; then
 | |
| 	_wanted -V applied-patches expl "patch" \
 | |
| 	  compadd ${${(M)${(f)"$(stg series 2> /dev/null)"}##[+>] *}#[+>] } \
 | |
| 		  && ret=0
 | |
|       else
 | |
| 	_files && ret=0
 | |
|       fi
 | |
|     ;;
 | |
|     (*)
 | |
|       _files && ret=0
 | |
|     ;;
 | |
|   esac
 | |
| fi
 | |
| 
 | |
| return ret
 |