mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #autoload
 | |
| 
 | |
| # 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'
 | |
| # Completion functions may set `COMPSKIP' to any value to make the 
 | |
| # main loops stop calling other completion functions.
 | |
| 
 | |
| comp="$comps[-first-]"
 | |
| if [[ ! -z "$comp" ]]; then
 | |
|   "$comp" "$@"
 | |
|   if (( $+COMPSKIP )); then
 | |
|     unset COMPSKIP
 | |
|     return
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| # For arguments we use the `_normal function.
 | |
| 
 | |
| if [[ $CONTEXT == argument || $CONTEXT == command ]]; then
 | |
|   _normal "$@"
 | |
| else
 | |
|   # Let's see if we have a special completion definition for the other
 | |
|   # possible contexts.
 | |
| 
 | |
|   comp=''
 | |
| 
 | |
|   case $CONTEXT in
 | |
|   redirect)  comp="$comps[-redirect-]";;
 | |
|   math)      comp="$comps[-math-]";;
 | |
|   subscript) comp="$comps[-subscript-]";;
 | |
|   value)     comp="$comps[-value-]";;
 | |
|   condition) comp="$comps[-condition-]";;
 | |
|   esac
 | |
| 
 | |
|   # If not, we use default completion, if any.
 | |
| 
 | |
|   [[ -z "$comp" ]] && comp="$comps[-default-]"
 | |
|   [[ -z "$comp" ]] || "$comp" "$@"
 | |
| fi
 |