mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-01 05:16:05 +01:00
Initial revision
This commit is contained in:
parent
347fab44e0
commit
903f59baaa
4 changed files with 235 additions and 0 deletions
88
Completion/Base/_complete_opts
Normal file
88
Completion/Base/_complete_opts
Normal file
|
@ -0,0 +1,88 @@
|
|||
#autoload
|
||||
|
||||
# Usage:
|
||||
# _complete_opts H '' f '_files'
|
||||
|
||||
emulate -L zsh
|
||||
setopt extendedglob
|
||||
|
||||
local done=yes
|
||||
|
||||
typeset -A option_pairs
|
||||
option_pairs=("$@")
|
||||
typeset -a no_arg with_arg opt_arg
|
||||
no_arg=($option_pairs[(I)?])
|
||||
opt_arg=($option_pairs[(I)?::]:s/:://)
|
||||
with_arg=($option_pairs[(I)?:]:s/:// $opt_arg)
|
||||
|
||||
case "${#no_arg}-${#with_arg}" in
|
||||
0-0)
|
||||
if [[ x$PREFIX = x-* ]]; then
|
||||
compadd -nQ - "$PREFIX$SUFFIX"
|
||||
else
|
||||
done=''
|
||||
fi
|
||||
;;
|
||||
|
||||
0-*)
|
||||
if [[ x$PREFIX = x- ]]; then
|
||||
IPREFIX="$IPREFIX$PREFIX"
|
||||
PREFIX=
|
||||
compadd $with_arg
|
||||
elif [[ x$PREFIX = x-[${(j::)with_arg}] ]]; then
|
||||
IPREFIX="$IPREFIX$PREFIX"
|
||||
PREFIX=
|
||||
eval $option_pairs[$IPREFIX[-1]:]
|
||||
elif [[ x$PREFIX = x-[${(j::)with_arg}]* ]]; then
|
||||
local p="$PREFIX[1,(r)[${(j::)with_arg}]]"
|
||||
IPREFIX="$IPREFIX$p"
|
||||
PREFIX="$PREFIX[$#p + 1,-1]"
|
||||
eval $option_pairs[$IPREFIX[-1]:]
|
||||
elif [[ x$words[$CURRENT-1] = x-[${(j::)with_arg}] ]]; then
|
||||
local p="$words[$CURRENT - 1]"
|
||||
eval $option_pairs[$p[-1]:]
|
||||
else
|
||||
done=''
|
||||
fi
|
||||
;;
|
||||
|
||||
*-0)
|
||||
if [[ x$PREFIX = x-[${(j::)no_arg}]# ]]; then
|
||||
IPREFIX="$IPREFIX$PREFIX"
|
||||
PREFIX=
|
||||
compadd $no_arg
|
||||
else
|
||||
done=''
|
||||
fi
|
||||
;;
|
||||
|
||||
*-*)
|
||||
if [[ x$PREFIX = x-[${(j::)no_arg}]# ]]; then
|
||||
IPREFIX="$IPREFIX$PREFIX"
|
||||
PREFIX=
|
||||
compadd $no_arg
|
||||
compadd $with_arg
|
||||
elif [[ x$PREFIX = x-[${(j::)no_arg}]#[${(j::)with_arg}] ]]; then
|
||||
IPREFIX="$IPREFIX$PREFIX"
|
||||
PREFIX=
|
||||
eval $option_pairs[$IPREFIX[-1]:]
|
||||
elif [[ x$PREFIX = x-[${(j::)no_arg}]#[${(j::)with_arg}]* ]]; then
|
||||
local p="$PREFIX[1,(r)[${(j::)with_arg}]]"
|
||||
IPREFIX="$IPREFIX$p"
|
||||
PREFIX="$PREFIX[$#p + 1,-1]"
|
||||
eval $option_pairs[$IPREFIX[-1]:]
|
||||
elif [[ x$words[$CURRENT-1] = x-[${(j::)no_arg}]#[${(j::)with_arg}] ]]; then
|
||||
local p="$words[$CURRENT - 1]"
|
||||
eval $option_pairs[$p[-1]:]
|
||||
else
|
||||
done=''
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ -z "$done" ]]; then
|
||||
compadd - -${(k)^option_pairs:gs/://}
|
||||
false
|
||||
else
|
||||
true
|
||||
fi
|
3
Completion/User/_bunzip2
Normal file
3
Completion/User/_bunzip2
Normal file
|
@ -0,0 +1,3 @@
|
|||
#compdef bunzip2 bzcat
|
||||
|
||||
_files -g '*.bz2'
|
3
Completion/User/_bzip2
Normal file
3
Completion/User/_bzip2
Normal file
|
@ -0,0 +1,3 @@
|
|||
#compdef bzip2
|
||||
|
||||
_files -g '*~*.bz2'
|
141
Completion/User/_cvs
Normal file
141
Completion/User/_cvs
Normal file
|
@ -0,0 +1,141 @@
|
|||
#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
|
||||
|
||||
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}
|
Loading…
Reference in a new issue