mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef -first-
 | |
| 
 | |
| # This function is called at the very beginning before any other
 | |
| # function for a specific context.
 | |
| #
 | |
| # This just gives some examples of things you might want to do here.
 | |
| #
 | |
| #
 | |
| # If you use the vared builtin and want completion in there to act the 
 | |
| # way completion on the right hand side of assignments is done, add
 | |
| # (or un-comment) this code:
 | |
| #
 | |
| #     if [[ -n $compstate[vared] ]]; then
 | |
| #       if [[ $compstate[vared] = *\[* ]]; then
 | |
| #         # vared on an array-element
 | |
| #         compstate[parameter]=${compstate[vared]%%\[*}
 | |
| #         compstate[context]=value
 | |
| #       else
 | |
| #         # vared on a parameter, let's see if it is an array
 | |
| #         compstate[parameter]=$compstate[vared]
 | |
| #         if [[ ${(tP)compstate[vared]} = *(array|assoc)* ]]; then
 | |
| #           compstate[context]=array_value
 | |
| #         else
 | |
| #           compstate[context]=value
 | |
| #         fi
 | |
| #       fi
 | |
| #       return
 | |
| #     fi
 | |
| #
 | |
| #
 | |
| #
 | |
| # Other things you can do here is to complete different things if the
 | |
| # word on the line matches a certain pattern. This example allows
 | |
| # completion of words from the history by adding two commas at the end 
 | |
| # and hitting TAB.
 | |
| #
 | |
| #     if [[ "$PREFIX" = *,, ]] && _wanted history-words; then
 | |
| #       local max i=1 expl
 | |
| #     
 | |
| #       PREFIX="$PREFIX[1,-2]"
 | |
| #       # If a numeric prefix is given, we use it as the number of
 | |
| #       # lines (multiplied by ten below) in the history to search.
 | |
| #       if [[ ${NUMERIC:-1} -gt 1 ]]; then
 | |
| #         max=$NUMERIC
 | |
| #         unset NUMERIC
 | |
| #       else
 | |
| #         # The default is to search the last 100 lines.
 | |
| #         max=10
 | |
| #       fi
 | |
| #       # We first search in the last ten words, then in the last
 | |
| #       # twenty words, and so on...
 | |
| #       while [[ i -le max ]]; do
 | |
| #         if zstyle -t ":completion:${curcontext}:history-words" sort; then
 | |
| #           _description history-words expl "history ($n)"
 | |
| #         else
 | |
| #           _description -V history-words expl "history ($n)"
 | |
| #         fi
 | |
| #         if compadd "$expl[@]" -Q - \
 | |
| #                "${(@)${(@)historywords:#[\$'\"]*}[1,i*10]}"; then
 | |
| #           # We have found at least one matching word, so we switch
 | |
| #           # on menu-completion and make sure that no other
 | |
| #           # completion function is called by setting _compskip.
 | |
| #           compstate[insert]=menu
 | |
| #           _compskip=all
 | |
| #           return
 | |
| #         fi
 | |
| #         (( i++ ))
 | |
| #       done
 | |
| #     fi
 |