mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #helper
 | |
| 
 | |
| # The main loop of the completion code. This is what is called when 
 | |
| # completion is attempted from the command line.
 | |
| # The completion code gives us the special variables and the arguments
 | |
| # from the command line are given as positional parameters.
 | |
| 
 | |
| local comp name
 | |
| 
 | |
| setopt localoptions nullglob rcexpandparam globdots
 | |
| unsetopt markdirs globsubst shwordsplit nounset
 | |
| 
 | |
| # An entry for `--first--' is the replacement for `compctl -T'
 | |
| # The `|| return 1' is used throughout: if a function producing matches
 | |
| # returns non-zero this is interpreted as `do not try to produce more matches'
 | |
| # (this is the replacement for `compctl -t').
 | |
| 
 | |
| comp="$comps[--first--]"
 | |
| [[ -z "$comp" ]] || callcomplete comps --first-- "$@" || return 1
 | |
| 
 | |
| # For arguments we use the `__normal' function called via the convenience
 | |
| # alias `compsub'.
 | |
| 
 | |
| if [[ $CONTEXT == argument || $CONTEXT == command ]]; then
 | |
|   compsub
 | |
| else
 | |
|   # Let's see if we have a special completion definition for the other
 | |
|   # possible contexts.
 | |
| 
 | |
|   comp=''
 | |
| 
 | |
|   case $CONTEXT in
 | |
|   redirect)  name=--redirect--;;
 | |
|   math)      name=--math--;;
 | |
|   subscript) name=--subscript--;;
 | |
|   value)     name=--value--;;
 | |
|   condition) name=--condition--;;
 | |
|   esac
 | |
| 
 | |
|   # If not, we use default completion, if any.
 | |
| 
 | |
|   comp="$comps[$name]"
 | |
|   if [[ -z "$comp" ]]; then
 | |
|      name=--default--
 | |
|      comp="$comps[--default--]"
 | |
|   fi
 | |
|   [[ -z "$comp" ]] || callcomplete comps "$name" "$@" || return 1
 | |
| fi
 |