mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef grep egrep fgrep
 | |
| # Ulrik Haugen 2001
 | |
| 
 | |
| local efgrep="" efarguments arguments
 | |
| 
 | |
| (( $+_is_gnu )) || typeset -gA _is_gnu
 | |
| 
 | |
| if (( ! $+_is_gnu[$words[1]] )); then
 | |
|   if [[ $(_call_program version $words[1] --help </dev/null 2>/dev/null) = *gnu* ]]
 | |
|   then
 | |
|     _is_gnu[$words[1]]=yes
 | |
|   else
 | |
|     _is_gnu[$words[1]]=
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| 
 | |
| [[ "$service" = [ef]grep ]] && efgrep=t
 | |
| 
 | |
| if [[ -z $efgrep ]]; then
 | |
|   efarguments=( \
 | |
|     '(--extended-regexp -F --fixed-strings)-E[extended regexp]' \
 | |
|     '(-E -F --fixed-strings)--extended-regexp' \
 | |
|     '(--fixed-strings -E --extended-regexp)-F[fixed strings]' \
 | |
|     '(-F -E --extended-regexp)--fixed-strings' \
 | |
|   )
 | |
| fi
 | |
| 
 | |
| arguments=( \
 | |
|   '(-e --regexp -f --file)1:pattern:' \
 | |
|   {'(--regexp -f --file 1)-e+[regexp]','(-e -f --file 1)--regexp='}':regexp:' \
 | |
|   {'(--file -e --regexp 1)-f+[file]','(-f -e --regexp 1)--file='}':pattern file:_files' \
 | |
|   \
 | |
|   '*:files:_files' \
 | |
|   \
 | |
|   {'(--after-context)-A+[after context]','(-A)--after-context='}':after context:(1)' \
 | |
|   '(--text --binary-files)-a[text]' '(-a --binary-files)--text' \
 | |
|   {'(--before-context)-B+[before context]','(-B)--before-context='}':before context:(1)' \
 | |
|   {'(--context)-C+[context]','(-C)--context='}':context:(1)' \
 | |
|   '(--byte-offset)-b[byte offset]' '(-b)--byte-offset' \
 | |
|   '(-a --text -I)--binary-files:binary files:(binary without-match text)' \
 | |
|   '(--count)-c[count]' '(-c)--count' \
 | |
|   {'(--directories -r --recursive)-d+[directories]','(-d -r --recursive)--directories='}':directories:(read skip recurse grep)' \
 | |
|   \
 | |
|   $efarguments \
 | |
|   \
 | |
|   '(--basic-regexp)-G[basic regexp]' '(-G)--basic-regexp' \
 | |
|   '(--with-filename)-H[with filename]' '(-H)--with-filename' \
 | |
|   '(--no-filename)-h[no filename]' '(-h)--no-filename' \
 | |
|   '--help' \
 | |
|   '(--binary-files)-I[ignore binary]' \
 | |
|   '(--ignore-case)-i[ignore case]' '(-i)--ignore-case' \
 | |
|   '(--files-without-match)-L[files without match]' '(-L)--files-without-match' \
 | |
|   '(--file-with-matches)-l[files with matches]' '(-l)--files-with-matches' \
 | |
|   '--mmap' \
 | |
|   '(--line-number)-n[line number]' '(-n)--line-number' \
 | |
|   '(--quiet --silent)-q[quiet]' '(-q --quiet)--silent' '(-q --silent)--quiet' \
 | |
|   '(--recursive -d --directories)-r[recursive]' '(-r -d --directories)--recursive' \
 | |
|   '(--no-mesages)-s[no messages]' '(-s)--no-messages' \
 | |
|   '(--version)-V[version]' '(-V)--version' \
 | |
|   '(--invert-match)-v[invert match]' '(-v)--invert-match' \
 | |
|   '(--word-regexp)-w[word regexp]' '(-w)--word-regexp' \
 | |
|   '(--line-regexp)-x[line regexp]' '(-x)--line-regexp' \
 | |
|   '(--null)-Z[null]' '(-Z)--null' \
 | |
| )
 | |
| 
 | |
| # remove long options?
 | |
| [[ -z "$_is_gnu[$words[1]]" ]] &&
 | |
|     arguments=( ${${${${arguments:#*\)--*}:#--*}//--[^ )]#/}/\( #\)/} )
 | |
| 
 | |
| _arguments -s $arguments
 | |
| 
 |