mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #autoload
 | |
| 
 | |
| # This function is called from functions that do matching whenever they
 | |
| # need to build a pattern that is used to match possible completions.
 | |
| # It gets the name of the calling function and two names of parameters
 | |
| # as arguments. The first one is used in the calling function to build
 | |
| # the pattern used for matching possible completions. The content of this
 | |
| # parameter on entry to this function is the string taken from the line.
 | |
| # Here it parameter should be changed to a pattern that matches words as
 | |
| # the match specs currently in use do.
 | |
| # In the calling function this pattern may be changed again or used only 
 | |
| # in parts. The second parameter whose name is given as the third argument
 | |
| # allows to give pattern flags like `(#l)' that are to be used whenever
 | |
| # matching is done.
 | |
| #
 | |
| # As an example, if you have global match specifications like:
 | |
| #
 | |
| #  compctl -M 'm:{a-z}={A-Z}' 'm:{a-z}={A-Z} r:|[.-]=* r:|=*'
 | |
| #
 | |
| # This function would look like:
 | |
| #
 | |
| #   eval "${3}='(#l)'"
 | |
| #   [[ compstate[matcher] -eq 2 ]] && eval "$2='${(P)2:gs/./*./:gs/-/*-/}'"
 | |
| #
 | |
| # The first line makes sure that matching is done case-insensitive as
 | |
| # specified by `m:{a-z}={A-Z}'. The second line replaces dots and hyphens
 | |
| # in the given string by patterns matching any characters before them,
 | |
| # like the `r:|[.-]=* r:|=*'. To make this work, the function `_match_test'
 | |
| # would have to be changed to `(( compstate[matcher] <= 2 ))'
 | |
| #
 | |
| # When automatic correction is used (see the file `_main_complete'), you
 | |
| # probably don't want to set matching flags here as that may make the
 | |
| # results slightly unpredictable. For this, change the line above to:
 | |
| #
 | |
| #   [[ compstate[matcher] -lt 0 ]] && eval "${3}='(#l)'"
 | |
| #
 | |
| # The default implementation of this function is empty.
 |