mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			798 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			798 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| #defkeycomp complete-word \C-xc
 | |
| 
 | |
| # Function to correct a filename.  Can be used as a completion widget,
 | |
| # or as a function in its own right, in which case it will print the
 | |
| # corrected filename to standard output.
 | |
| #
 | |
| # You can adapt max_approx to the maximum number of mistakes
 | |
| # which are allowed in total.
 | |
| 
 | |
| emulate -LR zsh
 | |
| setopt extendedglob
 | |
| 
 | |
| local file="$PREFIX$SUFFIX" trylist
 | |
| integer approx max_approx=6
 | |
| 
 | |
| [[ -z $WIDGET ]] && file=$1 
 | |
| 
 | |
| if [[ -e "$file" ]]; then
 | |
|   if [[ -n $WIDGET ]]; then
 | |
|     compadd "$file"
 | |
|   else
 | |
|     print "$file"
 | |
|   fi
 | |
|   return
 | |
| fi
 | |
| 
 | |
| for (( approx = 1; approx <= max_approx; approx++ )); do
 | |
|   trylist=( (#a$approx)"$file"(N) )
 | |
|   (( $#trylist )) && break
 | |
| done
 | |
| (( $#trylist )) || return 1
 | |
| 
 | |
| if [[ -n $WIDGET ]]; then
 | |
|   compadd -U "${trylist[@]}"
 | |
| else
 | |
|   print "${trylist[@]}"
 | |
| fi
 |