diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-08-01 14:48:28 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-08-01 14:48:28 +0000 |
commit | 61e68d70da5af5afe943f92cd94a8c96e78348d9 (patch) | |
tree | 1e88adbfc21452caedcb57af2880097a349f44e6 /Completion/User | |
parent | 14810d6df13e0564a606b74e4c4e918e80862e25 (diff) | |
download | zsh-61e68d70da5af5afe943f92cd94a8c96e78348d9.tar.gz zsh-61e68d70da5af5afe943f92cd94a8c96e78348d9.tar.xz zsh-61e68d70da5af5afe943f92cd94a8c96e78348d9.zip |
zsh-3.1.6 dot-zsh-199908011751
Diffstat (limited to 'Completion/User')
-rw-r--r-- | Completion/User/.distfiles | 4 | ||||
-rw-r--r-- | Completion/User/_cvs | 466 |
2 files changed, 331 insertions, 139 deletions
diff --git a/Completion/User/.distfiles b/Completion/User/.distfiles index 1491ba653..713be74dc 100644 --- a/Completion/User/.distfiles +++ b/Completion/User/.distfiles @@ -1,7 +1,7 @@ DISTFILES_SRC=' .distfiles - _a2ps _bzip2 _bunzip2 _chown _compress _configure _cvs _dd _dvi _find - _gdb _groups _gunzip _gzip + _a2ps _bzip2 _bunzip2 _chown _compress _configure + _cvs _dd _dvi _find _gdb _groups _gunzip _gzip _hosts _use_lo _make _man _mh _pdf _ps _rcs _rlogin _sh _strip _stty _su _tar _tar_archive _tex _uncompress _x_options _xfig diff --git a/Completion/User/_cvs b/Completion/User/_cvs index 4e191cecb..811d1c232 100644 --- a/Completion/User/_cvs +++ b/Completion/User/_cvs @@ -1,141 +1,333 @@ #compdef cvs -setopt localoptions extendedglob - -typeset -A commands -commands=(add "ad new" admin "adm rcs" annotate ann - checkout "co get" commit "ci com" diff "di dif" - edit "" editors "" export "exp ex" - history "hi his" import "im imp" init "" - log "lo rlog" login "logon lgn" logout "" - rdiff patch release "re rel" remove "rm delete" - status "st stat" rtag "rt rfreeze" tag "ta freeze" - unedit "" update "up upd" watch "" - watchers "") - -local com="${words[(i)(${(j:|:)${(kv)=commands}})]}" - -local showlist='compstate[list]=list; compstate[force_list]=yes' -local showhint="$showlist ; compstate[insert]=''" -local complete_D="compadd yesterday week\\ ago month\\ ago" -local complete_k="compadd kv kvl k o b v" -local complete_r="compadd -UX 'Enter tag name or rev number' ''; $showhint" -local complete_m="compadd -UX 'Enter log message' -n ''; $showhint" - - -if (( com < CURRENT )); then - case "$words[$com]" in - add|ad|new) # "+k:m:" - _complete_opts k: "$complete_k" m: "$complete_m" || _files - ;; - admin|adm|rcs) # "+ib::c:a:A:e:l::u::LUn:N:m:o:s:t::IqxV:k:" - _complete_opts i '' b:: '' c: '' a: '' A: '' e: '' l:: '' u:: '' L '' U '' n: '' N: '' m: "$complete_m" o: '' s: '' t:: '' I '' q '' x '' V: '' k: "$complete_k" || _files - ;; - annotate|ann) # "+lr:D:fR" - _complete_opts l '' r: '' D: '' f '' R '' || _files - ;; - checkout|co|get) # "+ANnk:d:flRpQqcsr:D:j:P" - _complete_opts A '' N '' n '' k: "$complete_k" d: '' f '' l '' R '' p '' Q '' q '' c '' s '' r: "$complete_r" D: "$complete_D" j: '' P '' || compadd MODULE - ;; - commit|ci|com) # "+nlRm:fF:r:" - _complete_opts n '' l '' R '' m: "$complete_m" f '' F: '' r: "$complete_r" || _files - ;; - diff|di|dif) # "+abcdefhilnpstuw0123456789BHNRC:D:F:I:L:U:V:W:k:r:" - _complete_opts a '' b '' c '' d '' e '' f '' h '' i '' l '' n '' p '' s '' t '' u '' w '' 0 '' 1 '' 2 '' 3 '' 4 '' 5 '' 6 '' 7 '' 8 '' 9 '' B '' H '' N '' R '' C: '' D: "$complete_D" F: '' I: '' L: '' U: '' V: '' W: '' k: "$complete_k" r: "$complete_r" || _files - ;; - edit) # "+lRa:" - _complete_opts l '' R '' a: '' || _files - ;; - editors) # "+lR" - _complete_opts l '' R '' || _files - ;; - export|exp|ex) # "+ANnk:d:flRpQqcsr:D:j:P" - _complete_opts A '' N '' n '' k: "$complete_k" d: '' f '' l '' R '' p '' Q '' q '' c '' s '' r: "$complete_r" D: "$complete_D" j: '' P '' || compadd MODULE - ;; - history|hi|his) # "+Tacelow?D:b:f:m:n:p:r:t:u:x:X:z:" - _complete_opts T '' a '' c '' e '' l '' o '' w '' \? '' D: "$complete_D" b: '' f: '' m: "$complete_m" n: '' p: '' r: '' t: '' u: '' x: '' X: '' z: '' || _files - ;; - import|im|imp) # "+Qqdb:m:I:k:W:" - _complete_opts Q '' q '' d '' b: '' m: "$complete_m" I: '' k: "$complete_k" W: '' || case $[CURRENT-com] in - 1) if [[ "${+CVSROOT}" == 1 && "$CVSROOT" != :* ]]; then - compgen -X "Enter repository name" -W "$CVSROOT" -g '*~*CVSROOT(/)' -s '' - else - compadd -UX "Enter repository name" -n '' && eval "$showhint" - fi - ;; - 2) compadd -UX "Enter vendor tag name" -n '' && eval "$showhint";; - 3) compadd -UX "Enter release tag name" -n '' && eval "$showhint";; - *) compadd -UX "No futher arguments used" -n '' && eval "$showhint";; - esac - ;; - init) - break - ;; - login|logon|lgn|logout) - _complete_opts || _files - ;; - rdiff|patch|pa) # "+V:k:cuftsQqlRD:r:" - _complete_opts V: '' k: "$complete_k" c '' u '' f '' t '' s '' Q '' q '' l '' R '' D: "$complete_D" r: "$complete_r" || _files - ;; - release|re|rel) # "+Qdq" - _complete_opts Q '' d '' q '' || _files -/ - ;; - remove|rm|delete) # "+flR" - _complete_opts f '' l '' R '' || _files - ;; - status|st|stat) # "+vlR" - _complete_opts v '' l '' R '' || _files - ;; - tag|ta|freeze) # "+FQqlRcdr:D:bf" - _complete_opts F '' Q '' q '' l '' R '' c '' d '' r: "$complete_r" D: "$complete_D" b '' f '' || _files - ;; - unedit) # "+lR" - _complete_opts l '' R '' || _files - ;; - update|up|upd) # "+ApPflRQqduk:r:D:j:I:W:" - _complete_opts A '' p '' P '' f '' l '' R '' Q '' q '' d '' u '' k: "$complete_k" r: "$complete_r" D: "$complete_D" j: '' I: '' W: '' || _files - ;; - watch) - if (( CURRENT == com + 1 )); then - compadd on off add remove - else - case "$words[com+1]" in - on|off) # "+lR" - _complete_opts l '' R '' || _files - ;; - add|remove) # "+lRa:" - _complete_opts l '' R '' a: '' || _files - ;; - esac - fi - ;; - watchers) # "+lR" - _complete_opts l '' R '' || _files - ;; - *) _files;; - esac - return -fi +_cvs () { + setopt localoptions extendedglob + + typeset -A commands + commands=(add "ad new" admin "adm rcs" annotate ann + checkout "co get" commit "ci com" diff "di dif" + edit "" editors "" export "exp ex" + history "hi his" import "im imp" init "" + log "lo rlog" login "logon lgn" logout "" + rdiff patch release "re rel" remove "rm delete" + status "st stat" rtag "rt rfreeze" tag "ta freeze" + unedit "" update "up upd" watch "" + watchers "") + + local com="${words[(i)(${(j:|:)${(kv)=commands}})]}" + + local showlist='compstate[list]=list; compstate[force_list]=yes' + local showhint="$showlist ; compstate[insert]=''" + local complete_D="compadd today yesterday week\\ ago month\\ ago" + local complete_k="compadd kv kvl k o b v" + local complete_r="_cvsrevisions" + local complete_m="compadd -UX 'Enter log message' -n ''; $showhint" + + if (( com < CURRENT )); then + case "$words[$com]" in + add|ad|new) # "+k:m:" + _complete_opts k: "$complete_k" m: "$complete_m" || _cvsaddp + ;; + admin|adm|rcs) # "+ib::c:a:A:e:l::u::LUn:N:m:o:s:t::IqxV:k:" + _complete_opts i '' b:: '' c: '' a: '' A: '' e: '' l:: '' u:: '' L '' \ + U '' n: '' N: '' m: "$complete_m" o: '' s: '' t:: '' I '' q '' x '' \ + V: '' k: "$complete_k" || + _cvstargets + ;; + annotate|ann) # "+lr:D:fR" + _complete_opts l '' r: "$complete_r" D: "$complete_D" f '' R '' || + _cvstargets + ;; + checkout|co|get) # "+ANnk:d:flRpQqcsr:D:j:P" + _complete_opts A '' N '' n '' k: "$complete_k" d: '_files -/' f '' \ + l '' R '' p '' Q '' q '' c '' s '' r: "$complete_r" D: "$complete_D" \ + j: "$complete_r" P '' || + _cvsrepositories + ;; + commit|ci|com) # "+nlRm:fF:r:" + _complete_opts n '' l '' R '' m: "$complete_m" f '' F: _files \ + r: "$complete_r" || + _cvstargets_modified + ;; + diff|di|dif) # "+abcdefhilnpstuw0123456789BHNRC:D:F:I:L:U:V:W:k:r:" + _complete_opts a '' b '' c '' d '' e '' f '' h '' i '' l '' n '' p '' \ + s '' t '' u '' w '' 0 '' 1 '' 2 '' 3 '' 4 '' 5 '' 6 '' 7 '' 8 '' \ + 9 '' B '' H '' N '' R '' C: '' D: "$complete_D" F: '' I: '' L: '' \ + U: '' V: '' W: '' k: "$complete_k" r: "$complete_r" || + _cvstargets_modified || _cvstargets + ;; + edit) # "+lRa:" + _complete_opts l '' R '' a: 'compadd edit unedit commit all none' || + _cvstargets + ;; + editors) # "+lR" + _complete_opts l '' R '' || _cvstargets + ;; + export|exp|ex) # "+Nnk:d:flRQqr:D:" + _complete_opts N '' n '' k: "$complete_k" d: '_files -/' f '' l '' \ + R '' Q '' q '' r: "$complete_r" D: "$complete_D" || + _cvsrepositories + ;; + history|hi|his) # "+Tacelow?D:b:f:m:n:p:r:t:u:x:X:z:" + _complete_opts T '' a '' c '' e '' l '' o '' w '' \? '' \ + D: "$complete_D" b: '' f: '' m: "$complete_m" n: '' p: '' r: '' \ + t: '' u: '' x: '' X: '' z: '' || + _cvstargets + ;; + import|im|imp) # "+Qqdb:m:I:k:W:" + _complete_opts Q '' q '' d '' b: '' m: "$complete_m" I: _files \ + k: "$complete_k" W: '' || + case $[CURRENT-com] in + 1) _cvsrepositories;; + 2) compadd -UX "Enter vendor tag name" -n '' && eval "$showhint";; + 3) compadd -UX "Enter release tag name" -n '' && eval "$showhint";; + *) compadd -UX "No futher arguments used" -n '' && eval "$showhint";; + esac + ;; + init) + break + ;; + login|logon|lgn|logout) + _complete_opts || _files + ;; + rdiff|patch|pa) # "+V:k:cuftsQqlRD:r:" + _complete_opts V: '' k: "$complete_k" c '' u '' f '' t '' s '' Q '' \ + q '' l '' R '' D: "$complete_D" r: "$complete_r" || + _cvstargets + ;; + release|re|rel) # "+Qdq" + _complete_opts Q '' d '' q '' || _files -/ + ;; + remove|rm|delete) # "+flR" + _complete_opts f '' l '' R '' || _cvsremovep + ;; + status|st|stat) # "+vlR" + _complete_opts v '' l '' R '' || _cvstargets + ;; + tag|ta|freeze) # "+FQqlRcdr:D:bf" + _complete_opts F '' Q '' q '' l '' R '' c '' d '' r: "$complete_r" \ + D: "$complete_D" b '' f '' || + _cvstargets + ;; + unedit) # "+lR" + _complete_opts l '' R '' || _cvstargets + ;; + update|up|upd) # "+ApPflRQqduk:r:D:j:I:W:" + _complete_opts A '' p '' P '' f '' l '' R '' Q '' q '' d '' u '' \ + k: "$complete_k" r: "$complete_r" D: "$complete_D" j: "$complete_r" \ + I: '' W: '' || + _cvstargets + ;; + watch) + if (( CURRENT == com + 1 )); then + compadd on off add remove + else + case "$words[com+1]" in + on|off) # "+lR" + _complete_opts l '' R '' || _cvstargets + ;; + add|remove) # "+lRa:" + _complete_opts l '' R '' \ + a: 'compadd edit unedit commit all none' || \ + _cvstargets + ;; + esac + fi + ;; + watchers) # "+lR" + _complete_opts l '' R '' || _cvstargets + ;; + *) _files;; + esac + return + fi + + _complete_opts \ + H '' Q '' q '' r '' w '' l '' n '' t '' v '' f '' a '' \ + b: "compadd /usr/local/bin" \ + T: "compadd $TMPPREFIX:h $TMPDIR /tmp" \ + e: "compadd vi" \ + d: "compadd $_cvs_roots || _files -/" \ + z: "compadd 9'" \ + s: "_cvs_user_variable" \ + || + compadd ${(k)commands} || + compadd ${(kv)=commands} +} + +_cvsrevisions () { + compadd - ${${${(M)${(f)"$(cvs -q status -vl .)"}:# *}##[ ]##}%%[ ]*} +} + +_cvsrepositories () { + local root=$CVSROOT + [[ -f CVS/Root ]] && root=$(<CVS/Root) + + if [[ $root = :* || ! -d $root ]]; then + compadd -UX "Enter repository name" -n '' && + { compstate[list]=list; compstate[force_list]=yes; compstate[insert]='' } + else + compadd - \ + $root/^CVSROOT(:t) \ + ${${(M)${(f)"$(<$root/CVSROOT/modules)"}:#[^#]*}%%[ ]*} + fi +} + +_cvsprefix () { + #if [[ -prefix */ ]]; then + if [[ x"$PREFIX" == x*/* ]]; then + qpref="${PREFIX%/*}/" + pref=$~qpref + else + qpref= + pref=./ + fi +} + +_cvsdirentries () { + setopt localoptions nullglob unset + if [[ -f ${pref}CVS/Entries ]]; then + entries=(${${${(M)${(f)"$(<${pref}CVS/Entries)"}:#D/*}#D/}%%/*}) + else + entries=() + fi +} + +_cvsentries () { + setopt localoptions nullglob unset + if [[ -f ${pref}CVS/Entries ]]; then + entries=(${${${${(f)"$(<${pref}CVS/Entries)"}:#D}#(D|)/}%%/*}) + else + entries=() + fi +} + +_cvsentries_modified () { + if (( $+_cvsentries_modified_disable_stat )) || + ! { zmodload -e stat || zmodload stat }; then + _cvsentries + return + fi + + entries=() + local line Entries + typeset -A mtime -case ${+cvs_roots} in - 0) - cvs_roots=() - if [[ -f ~/.cvspass ]]; then - cvs_roots=( - $(cut -d ' ' -f 1 ~/.cvspass) - ) + if [[ -f "${pref}CVS/Entries" ]]; then + Entries="$(<${pref}CVS/Entries)" + else + return + fi + + local LANG=C + local OLDTZ="$TZ"; if ! (( $+TZ )); then unset OLDTZ; fi; export TZ=GMT + + mtime=(${(s:/:)${(j:/:)${${${${(M)${(f)Entries}:#/*}#/}%/*/*}/\\/*\\///}}}) + entries=(${${${(M)${(f)Entries}:#D/*}#D/}%%/*}) + builtin stat -n +mtime -F '%a %b %e %T %Y' "$pref${(@k)^mtime}" | + while read line + do + line=${line#$pref} + if [[ x"$mtime[${line%% *}]" != x"${line#* }" ]]; then + entries=($entries "${line%% *}") fi - ;; -esac - -_complete_opts \ - H '' Q '' q '' r '' w '' l '' n '' t '' v '' f '' a '' \ - b: "compadd /usr/local/bin" \ - T: "compadd $TMPPREFIX:h $TMPDIR /tmp" \ - e: "compadd vi" \ - d: "compadd $cvs_roots || _files -/" \ - z: "compadd 9'" \ - s: "_cvs_user_variable" \ - || -compadd ${(k)commands} || -compadd ${(kv)=commands} + done + + if (( $+OLDTZ )); then TZ="$OLDTZ"; else unset TZ; fi +} + +_cvsdirs () { + if [[ -d ${pref}CVS ]]; then + _cvsdirentries + case $#entries in + 0) false;; + 1) compgen "$@" -g "${entries:q}";; + *) compgen "$@" -g '('${(j:|:)entries:q}')';; + esac + else + _files + fi +} + +_cvstargets () { + local qpref pref entries + _cvsprefix + if [[ -d ${pref}CVS ]]; then + _cvsentries + case $#entries in + 0) false;; + 1) compgen -g "${entries:q}";; + *) compgen -g '('${(j:|:)entries:q}')';; + esac + else + _files + fi +} + +_cvstargets_modified () { + local qpref pref entries + _cvsprefix + if [[ -d ${pref}CVS ]]; then + _cvsentries_modified + case $#entries in + 0) false;; + 1) compgen -g "${entries:q}";; + *) compgen -g '('${(j:|:)entries:q}')';; + esac + else + _files + fi +} + +_cvsremovep () { + local qpref pref entries + _cvsprefix + if [[ -d ${pref}CVS ]]; then + _cvsentries + setopt localoptions unset + local omit + omit=(${pref}*(D:t)) + eval 'entries=(${entries:#('${(j:|:)omit:q}')})' + compadd -P "$qpref" - ${entries:q} || + _cvsdirs + else + _files + fi +} + +_cvsaddp () { + local qpref pref entries + _cvsprefix + if [[ -d ${pref}CVS ]]; then + _cvsentries + setopt localoptions unset + local omit + omit=($_cvs_ignore_default ${entries:q} ${=cvsignore}) + [[ -r ~/.cvsignore ]] && omit=($omit $(<~/.cvsignore)) + [[ -r ${pref}.cvsignore ]] && omit=($omit $(<${pref}.cvsignore)) + compgen -g '*~(*/|)('${(j:|:)omit}')(D)' || + compgen -g '*~(*/|)('${(j:|:)entries:q}')(D)' || + _cvsdirs + else + _files + fi +} + +if (( ! $+_cvs_ignore_default )); then + _cvs_ignore_default=( + RCS SCCS CVS CVS.adm RCSLOG 'cvslog.*' tags TAGS .make.state .nse_depinfo + '*\~' '\#*' '.\#*' ',*' '_$*' '*$' '*.old' '*.bak' '*.BAK' '*.orig' '*.rej' + '.del-*' '*.a' '*.olb' '*.o' '*.obj' '*.so' '*.exe' '*.Z' '*.elc' '*.ln' + core + ) +fi + +if (( ! $+_cvs_roots )); then + if [[ -f ~/.cvspass ]]; then + _cvs_roots=(${${(f)"$(<~/.cvspass)"}%% *}) + else + _cvs_roots=() + fi +fi + +_cvs "$@" |