From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23272 invoked from network); 15 Mar 2002 10:58:32 -0000 Received: from sunsite.dk (130.225.247.90) by ns1.primenet.com.au with SMTP; 15 Mar 2002 10:58:32 -0000 Received: (qmail 214 invoked by alias); 15 Mar 2002 10:58:24 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 16838 Received: (qmail 203 invoked from network); 15 Mar 2002 10:58:24 -0000 X-VirusChecked: Checked Date: Fri, 15 Mar 2002 10:57:55 +0000 From: Oliver Kiddle To: zsh-workers@sunsite.dk Subject: PATCH: update _grep for v2.5 Message-ID: <20020315105755.GA13706@logica.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.27i Sender: Oliver Kiddle The new GNU grep 2.5 adds a few new options which this now completes along with the value for GREP_OPTIONS. Index: Completion/Unix/Command/_grep =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_grep,v retrieving revision 1.4 diff -u -r1.4 _grep --- Completion/Unix/Command/_grep 25 Feb 2002 09:09:36 -0000 1.4 +++ Completion/Unix/Command/_grep 15 Mar 2002 10:53:34 -0000 @@ -1,25 +1,39 @@ -#compdef grep egrep fgrep +#compdef grep egrep fgrep -value-,GREP_OPTIONS,-default- # Ulrik Haugen 2001 -local arguments matchers +local arguments matchers command + +if [[ $service = *GREP_OPT* ]]; then + compset -q + words=( fake "$words[@]" ) + (( CURRENT++ )) + command=grep +else + arguments=( + '(-e --regexp -f --file)1: :_guard "^--*" pattern' + '*:files:->files' + ) + command="$words[1]" +fi (( $+_is_gnu )) || typeset -gA _is_gnu -if (( ! $+_is_gnu[$words[1]] )); then - if [[ $(_call_program version $words[1] --help /dev/null) = *gnu* ]] +if (( ! $+_is_gnu[$command] )); then + if [[ $(_call_program version $command --help /dev/null) = *gnu* ]] then - _is_gnu[$words[1]]=yes + _is_gnu[$command]=yes else - _is_gnu[$words[1]]= + _is_gnu[$command]= fi fi if [[ $service != [ef]grep ]]; then - matchers='(--extended-regexp --fixed-strings --basic-regexp -E -F -G)' - arguments=( + matchers='(--extended-regexp --fixed-strings --basic-regexp --perl-regexp -E -F -G -P)' + arguments+=( $matchers{--extended-regexp,-E}'[use extended regular expression]' $matchers{--fixed-strings,-F}'[use literal strings]' $matchers{--basic-regexp,-G}'[use basic regular expression]' + $matchers{--perl-regexp,-P}'[use perl regular expression]' ) fi @@ -28,21 +42,30 @@ '(--text -a --binary-files -I)'{--text,-a}'[process binary file as if it were text]' '(--before-context -B)'{--before-context=,-B+}'[specify lines of leading context]:lines' '(--context,-C)'{--context=,-C+}'[specify lines of context]:lines' + '(--color --colour)--'{color,colour}'=-[distinguish matching string]::when:(always never auto)' '(--byte-offset -b -c)'{--byte-offset,-b}'[print the byte offset with output lines]' '(--text -a -I)--binary-files=[specify type to assume for binary files]:file type:(binary without-match text)' '(--count -c --byte-offset -b --line-number -n)'{--count,-c}'[only print a count of matching lines]' '(--directories -d -r --recursive)'{--directories=,-d+}'[specify handling of directories]:action on directory:(read skip recurse)' + '(--devices -D)'{--devices=,-D+}'[specify handling of devices, FIFOs and sockets]:action on device:(read skip)' '(1)*'{--regexp=,-e+}'[specify pattern]:pattern' '(1)*'{--file=,-f+}'[specify pattern file]:file:_files' '(--with-filename -H --no-filename -h)'{--with-filename,-H}'[print filename with each match]' '(--no-filename -h --with-filename -H --null -Z --files-without-match -L --file-with-matches -l)'{--no-filename,-h}'[suppress printing of filenames]' + '--label=[provide filename to print for stdin]:filename label for stdin' + '--line-buffered[flush output on every line]' '(--text -a --binary-files)-I[process binary files as if non-matching]' '(--ignore-case -i -y)'{--ignore-case,-i,-y}'[case-insensitive]' '(--files-without-match -L --file-with-matches -l --no-filename -h)'{--files-without-match,-L}"[output non-matching files' names only]" '(--files-with-matches -l --files-without-match -L --no-filename -h)'{--files-with-matches,-l}"[output matching files' names only]" + '(--max-count -m)'{--max-count=,-m+}'[stop after specified no of matches]:max number of matches' '(--line-number -n -c)'{--line-number,-n}'[prefix output with line numbers]' + '(--only-matching -o)'{--only-matching,-o}'[show only matching part of line]' '(--quiet --silent -q)'{--quiet,--silent,-q}'[suppress normal output]' - '(--recursive -r -d --directories)'{--recursive,-r}'[recurse subdirectories]' + '(--recursive -r -R -d --directories)'{--recursive,-r,-R}'[recurse subdirectories]' + '*--include=[examine files matching specified pattern]:file pattern' + '*--exclude=[skip files matching specified pattern]:file pattern' + '*--exclude-from=[skip files matching pattern in specified file]:file:_files' '(--no-mesages -s)'{--no-messages,-s}'[suppress messages about unreadable]' '(--version -V)'{--version,-V}'[display version info]' '(--invert-match -v)'{--invert-match,-v}'[select non-matching lines]' @@ -51,12 +74,10 @@ '(--null -Z --no-filename -h)'{--null,-Z}'[print 0 byte after FILE name]' '--help[display help]' '--mmap[memory map input]' - '(-e --regexp -f --file)1: :_guard "^--*" pattern' - '*:files:_files' ) # remove long options? -[[ -z "$_is_gnu[$words[1]]" ]] && +[[ -z "$_is_gnu[$command]" ]] && arguments=( ${arguments:#(|*\)(\*|))--*} ) _arguments -s $arguments[@] -- This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you.