mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			746 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			746 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| #autoload
 | |
| 
 | |
| local opt OPTARG
 | |
| local term=$'\0'
 | |
| 
 | |
| while getopts "t:" opt; do
 | |
|   case $opt in
 | |
|     (t)
 | |
|     term=$OPTARG
 | |
|     ;;
 | |
| 
 | |
|     (*)
 | |
|     return 1
 | |
|     ;;
 | |
|   esac
 | |
| done
 | |
| shift $(( OPTIND - 1 ))
 | |
| 
 | |
| local tag=$1
 | |
| local desc=$2
 | |
| shift 2
 | |
| 
 | |
| reply=(\()
 | |
| 
 | |
| integer i
 | |
| local -a wds
 | |
| 
 | |
| for (( i = 1; i <= $#; i++ )); do
 | |
|   wds=(${(s.:.)argv[i]})
 | |
|   reply+=(/${wds[1]//\**/"[^$term]#"}"$term"/)
 | |
|   if [[ $term = $'\0' ]]; then
 | |
|     reply+=(":${tag}:${desc}:(( ${wds[1]//\*}:${wds[2]//(#m)[: \(\)]/\\$MATCH} ))")
 | |
|   else
 | |
|     reply+=(":${tag}:${desc}:_values -s ${(q)term} ${(q)desc} \
 | |
| ${(q)${${wds[1]//\*}//(#m)[:\[\]]/\\$MATCH}}\\[${(q)${wds[2]//(#m)[:\[\]]/\\$MATCH}}\\]")
 | |
|   fi
 | |
|   eval "reply+=($wds[3])"
 | |
|   if (( $i == $# )); then
 | |
|     reply+=(\))
 | |
|   else
 | |
|     reply+=(\|)
 | |
|   fi
 | |
| done
 |