diff --git a/ChangeLog b/ChangeLog index 936ccbd3a..edd320d7a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2001-01-15 Sven Wischnowsky + * Ulrik Haugen: 13344, 13347: Completion/User/_grep, + Completion/User/_ls, Completion/User/_use_lo: add completion for + ls and ([ef]|)grep + * 13346: Completion/Bsd/_bsd_pkg, Completion/Bsd/_kld, Completion/Core/_compalso, Completion/Core/_complete, Completion/Core/_normal, Completion/Core/compdump, diff --git a/Completion/User/_grep b/Completion/User/_grep new file mode 100755 index 000000000..482047080 --- /dev/null +++ b/Completion/User/_grep @@ -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) = *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 + diff --git a/Completion/User/_ls b/Completion/User/_ls new file mode 100755 index 000000000..730954e47 --- /dev/null +++ b/Completion/User/_ls @@ -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) = *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 diff --git a/Completion/User/_use_lo b/Completion/User/_use_lo index 2833d61b1..9dae2bdfc 100644 --- a/Completion/User/_use_lo +++ b/Completion/User/_use_lo @@ -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.