From: Tanaka Akira <akr@jaist.ac.jp>
To: zsh-workers@sunsite.auc.dk
Subject: Re: PATCH: Re: CVS completer (Re: PATCH: Re: Completion/User functions again)
Date: 27 Jul 1999 22:58:12 +0900 [thread overview]
Message-ID: <rsqzp0idwjv.fsf@crane.jaist.ac.jp> (raw)
In-Reply-To: "Bart Schaefer"'s message of "Tue, 27 Jul 1999 13:49:38 +0000"
In article <990727134938.ZM26449@candle.brasslantern.com>,
"Bart Schaefer" <schaefer@candle.brasslantern.com> writes:
> Neither 7292 nor 7293 applied cleanly to the _cvs file from 7290. I don't
> have time this morning to attempt to figure it out.
Sorry, It's mistake.
My latest version of _cvs is follows:
------------------------------------------------------------
#compdef cvs
_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: '' D: '' f '' R '' || _cvstargets
;;
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 '' ||
_cvsrepositories
;;
commit|ci|com) # "+nlRm:fF:r:"
_complete_opts n '' l '' R '' m: "$complete_m" f '' F: '' \
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: '' || _cvstargets
;;
editors) # "+lR"
_complete_opts l '' R '' || _cvstargets
;;
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 '' ||
_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: '' \
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: '' 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: '' || _cvstargets
;;
esac
fi
;;
watchers) # "+lR"
_complete_opts l '' R '' || _cvstargets
;;
*) _files;;
esac
return
fi
case ${+cvs_roots} in
0)
cvs_roots=()
if [[ -f ~/.cvspass ]]; then
cvs_roots=(
$(cut -d ' ' -f 1 ~/.cvspass)
)
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}
}
_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
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
done
if (( $+OLDTZ )); then TZ="$OLDTZ"; else unset TZ; fi
}
_cvsdirs () {
if [[ -d ${pref}CVS ]]; then
_cvsdirentries
if (( $#entries )); then
compgen "$@" -g '('${(j:|:)entries:q}')'
fi
else
_files
fi
}
_cvstargets () {
local qpref pref entries
_cvsprefix
if [[ -d ${pref}CVS ]]; then
_cvsentries
if (( $#entries )); then
compgen -g '('${(j:|:)entries:q}')'
fi
else
_files
fi
}
_cvstargets_modified () {
local qpref pref entries
_cvsprefix
if [[ -d ${pref}CVS ]]; then
_cvsentries_modified
if (( $#entries )); then
compgen -g '('${(j:|:)entries:q}')'
fi
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 all omit
all=( ${pref}*~${pref}CVS(D:t) )
omit=( CVS $entries ${=cvsignore} )
[[ -r ~/.cvsignore ]] && omit=( $omit $(<~/.cvsignore) )
[[ -r ${pref}.cvsignore ]] && omit=( $omit $(<${pref}.cvsignore) )
compgen -g '*~(*/|)('${(j:|:)omit:q}')' ||
{ _cvsdirentries; compgen -g '('${(j:|:)entries:q}')' }
else
_files
fi
}
_cvs "$@"
------------------------------------------------------------
--
Tanaka Akira
next prev parent reply other threads:[~1999-07-27 14:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-07-21 11:27 Sven Wischnowsky
1999-07-21 12:35 ` Tanaka Akira
1999-07-21 15:43 ` Tanaka Akira
1999-07-21 15:54 ` Bart Schaefer
1999-07-25 9:23 ` Tanaka Akira
1999-07-25 11:38 ` Tanaka Akira
1999-07-26 4:48 ` Tanaka Akira
1999-07-26 16:26 ` Tanaka Akira
1999-07-26 17:10 ` Tanaka Akira
1999-07-27 7:48 ` PATCH: " Bart Schaefer
1999-07-27 8:12 ` Peter Stephenson
1999-07-27 10:07 ` Tanaka Akira
1999-07-27 11:45 ` Tanaka Akira
1999-07-27 13:49 ` Bart Schaefer
1999-07-27 13:58 ` Tanaka Akira [this message]
1999-07-27 14:11 ` Tanaka Akira
1999-07-28 16:05 ` Tanaka Akira
1999-07-27 8:15 ` Peter Stephenson
1999-07-27 8:58 ` Tanaka Akira
1999-08-02 9:47 PATCH: " Sven Wischnowsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=rsqzp0idwjv.fsf@crane.jaist.ac.jp \
--to=akr@jaist.ac.jp \
--cc=zsh-workers@sunsite.auc.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).