Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: Re: new-style completition for gnu grep and ls
- X-seq: zsh-workers 13347
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: PATCH: Re: new-style completition for gnu grep and ls
- Date: Mon, 15 Jan 2001 10:23:38 +0100 (MET)
- In-reply-to: Ulrik Haugen's message of Sun, 14 Jan 2001 00:09:13 +0100
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
Ulrik Haugen wrote:
> Ok, I gave the manpages on solaris a bit more than a glance and all short
> options seem to be the same. Now they check what version is available and
> completes accordingly. (Hmm, maybe the check should depend on what command is
> being completed in words[1]...)
> Also I've cleaned them up a little. I hope these can make it into the
> distribution.
I've slightly modified these to use our standard $_is_gnu assoc.
I guess there are several ls'es out there that don't support all of
these options, but...
There is also a small change to the --color option, using `=-' instead
of `=' (argument must be in same word).
Bye
Sven
Index: Completion/User/_grep
===================================================================
RCS file: _grep
diff -N _grep
--- /dev/null Mon Dec 11 17:26:27 2000
+++ _grep Mon Jan 15 01:23:05 2001
@@ -0,0 +1,72 @@
+#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 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
+
Index: Completion/User/_ls
===================================================================
RCS file: _ls
diff -N _ls
--- /dev/null Mon Dec 11 17:26:27 2000
+++ _ls Mon Jan 15 01:23:05 2001
@@ -0,0 +1,92 @@
+#compdef ls gls
+# Ulrik Haugen 2001
+
+local arguments
+
+(( $+_is_gnu )) || typeset -gA _is_gnu
+
+if (( ! $+_is_gnu[$words[1]] )); then
+ if [[ $(_call version $words[1] --help </dev/null 2>/dev/null) = *gnu* ]]
+ then
+ _is_gnu[$words[1]]=yes
+ else
+ _is_gnu[$words[1]]=
+ fi
+fi
+
+arguments=( \
+ '*:files:_files' \
+ \
+ '(--all -A --almost-all)-a[all]' '(-a -A --almost-all)--all' \
+ '(--almost-all -a --all)-A[almost all]' '(-A -a --all)--almost-all' \
+ '(--ignore-backups)-B[ignore backups]' '(-B)--ignore-backups' \
+ '(--directory)-d[directory]' '(-d)--directory' \
+ {'(--ignore)-I+[ignore]','(-I)--ignore='}':ignore:' \
+ '(--dereference)-L[dereference]' '(-L)--dereference' \
+ '(--recursive)-R[recursive]' '(-R)--recursive' \
+ \
+ '(--no-group)-G[no group]' '(-G)--no-group' \
+ '(--human-readable -H --si)-h[human readable]' '(-h -H --si)--human-readable' \
+ '(--si -h --human-readable)-H[si]' '(-H -h --human-readable)--si' \
+ '(--inode)-i[inode]' '(-i)--inode' \
+ \
+ '(--format -o -1 -C -m -x)-l[long]' \
+ '(--format -l --no-group -1 -C -m -x)-o[no group, long]' \
+ '(--format -l -o -C -m -x)-1[single column]' \
+ '(--format -l -o -1 -m -x)-C[sort vertically]' \
+ '(--format -l -o -1 -C -x)-m[comma separated]' \
+ '(--format -l -o -1 -C -m)-x[sort horizontally]' \
+ '(-l -o -1 -C -m -x)--format=:format:(verbose long commas horizontal across vertical single-column)' \
+ \
+ '(--size -f)-s[size]' '(-s -f)--size' \
+ \
+ '(--time -u)-c[status change time]' \
+ '(--time -c)-u[access time]' \
+ '(-c -u)--time=:time:(ctime status use atime access)' \
+ \
+ '(-a --all -U -l --format -s --size -t --sort)-f[no sort, all]' \
+ '(--reverse)-r[reverse]' '(-r)--reverse' \
+ \
+ '(--sort -t -U -v -X)-S[sort by size]' \
+ '(--sort -S -U -v -X)-t[sort by time]' \
+ '(--sort -S -t -v -X)-U[no sort]' \
+ '(--sort -S -t -U -X)-v[sort by version]' \
+ '(--sort -S -t -U -v)-X[sort by extention]' \
+ '(-S -t -U -v -X)--sort=:sort:(size time none version extention)' \
+ \
+ '--color=-::color:(never always auto)' \
+ \
+ '(--classify --indicator-style -p --file-type)-F[classify]' \
+ '(-F --indicator-style -p --file-type)--classify' \
+ '(--file-type --indicator-style -F --classify)-p[file type]' \
+ '(-p --indicator-style -F --classify)--file-type' \
+ '(-F --classify -p --file-type)--indicator-style=:indicator style:(none file-type classify)' \
+ \
+ '--full-time' \
+ \
+ '(--kilobytes --block-size)-k[kilobytes]' '(-k --blocksize)--kilobytes' \
+ '(-k --kilobytes)--block-size:blocksize:(1024)' \
+ \
+ '(--numeric-uid-gid)-n[numeric uid, gid]' \
+ {'(--tabsize)-T+[tabsize]','(-T)--tabsize='}':tabsize:(8)' \
+ {'(--width)-w+[width]','(-w)--width='}':width:(80)' \
+ \
+ '(--quoting-style --escape -N --literal -Q --quote-name)-b[escape]' \
+ '(--quoting-style -b -N --literal -Q --quote-name)--escape' \
+ '(--quoting-style -b --escape --literal -Q --quote-name)-N[literal]' \
+ '(--quoting-style -b --escape -N -Q --quote-name)--literal' \
+ '(--quoting-style -b --escape -N --literal --quote-name)-Q[quote name]' \
+ '(--quoting-style -b --escape -N --literal -Q)--quote-name' \
+ '(-b --escape -N --literal -Q --quote-name)--quoting-style=:quoting style:(literal shell shell-always c escape clocale locale)' \
+ \
+ '(--hide-control-chars --show-control-chars)-q[hide control chars]' \
+ '(-q --show-control-chars)--hide-control-chars' \
+ '(-q --hide-control-chars)--show-control-chars' \
+ '--version' \
+)
+
+# remove long options?
+[[ -z "$_is_gnu[$words[1]]" ]] &&
+ arguments=( ${${${${arguments:#*\)--*}:#--*}//--[^ )]#/}/\( #\)/} )
+
+_arguments -s $arguments
Index: Completion/User/_use_lo
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/User/_use_lo,v
retrieving revision 1.2
diff -u -r1.2 _use_lo
--- Completion/User/_use_lo 2000/06/26 10:47:01 1.2
+++ Completion/User/_use_lo 2001/01/15 09:23:05
@@ -1,4 +1,4 @@
-#compdef gls
+#autoload
# This is for GNU-like commands which understand the --help option,
# but which do not otherwise require special completion handling.
--
Sven Wischnowsky wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author