diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-11-12 15:28:24 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-11-12 15:28:24 +0000 |
commit | e6282df1155e8d9b08b2e518a452c1997973f1ce (patch) | |
tree | b0c8ed7e8512cc4397ae7df6d138ea66147565b3 /Completion/Builtins | |
parent | 167b0ae3b98938f75287dcf2e112d41a03532c5f (diff) | |
download | zsh-e6282df1155e8d9b08b2e518a452c1997973f1ce.tar.gz zsh-e6282df1155e8d9b08b2e518a452c1997973f1ce.tar.xz zsh-e6282df1155e8d9b08b2e518a452c1997973f1ce.zip |
manual/8630
Diffstat (limited to 'Completion/Builtins')
26 files changed, 149 insertions, 109 deletions
diff --git a/Completion/Builtins/_aliases b/Completion/Builtins/_aliases index 8764f7f66..a097d020e 100644 --- a/Completion/Builtins/_aliases +++ b/Completion/Builtins/_aliases @@ -2,7 +2,6 @@ local expl -_description expl 'regular alias' -compadd "$expl[@]" - "${(@k)aliases}" -_description expl 'global alias' -compadd "$expl[@]" - "${(@k)galiases}" +_alternative any:argument \ + 'aliases:regular alias:compadd - ${(@k)aliases}' \ + 'global-aliases:global alias:compadd - ${(@k)galiases}' diff --git a/Completion/Builtins/_arrays b/Completion/Builtins/_arrays index a2aa813b6..37eb20bf5 100644 --- a/Completion/Builtins/_arrays +++ b/Completion/Builtins/_arrays @@ -2,5 +2,7 @@ local expl +_tags any:argument arrays || return 1 + _description expl array compadd "$expl[@]" - "${(@k)parameters[(R)*array*]}" diff --git a/Completion/Builtins/_autoload b/Completion/Builtins/_autoload index 4a97b2aec..116bb7765 100644 --- a/Completion/Builtins/_autoload +++ b/Completion/Builtins/_autoload @@ -2,5 +2,7 @@ local expl +_tags any:argument functions || return 1 + _description expl 'shell function' compadd "$expl[@]" - ${^fpath}/*(N:t) diff --git a/Completion/Builtins/_bindkey b/Completion/Builtins/_bindkey index b60dafbb2..31215a576 100644 --- a/Completion/Builtins/_bindkey +++ b/Completion/Builtins/_bindkey @@ -10,9 +10,13 @@ local expl if [[ "$words[2]" = -*[DAN]* || "$words[CURRENT-1]" = -*M ]]; then + _tags -M keymaps || return 1 + _description expl keymap compadd "$expl[@]" - "$keymaps[@]" else + _tags any:argument widgets || return 1 + _description expl widget compadd "$expl[@]" -M 'r:|-=* r:|=*' - "${(@k)widgets}" fi diff --git a/Completion/Builtins/_builtin b/Completion/Builtins/_builtin index cf02093bb..fcb20560f 100644 --- a/Completion/Builtins/_builtin +++ b/Completion/Builtins/_builtin @@ -7,6 +7,8 @@ if (( $CURRENT > 2 )); then else local expl + _tags any:command commands || return 1 + _description expl 'builtin command' compadd "$expl[@]" "$@" - "${(k@)builtins}" fi diff --git a/Completion/Builtins/_cd b/Completion/Builtins/_cd index b407b5a85..26846fde2 100644 --- a/Completion/Builtins/_cd +++ b/Completion/Builtins/_cd @@ -22,10 +22,13 @@ if [[ CURRENT -eq 3 ]]; then rep=(${~PWD/$words[2]/*}~$PWD(-/N)) # Now remove all the common parts of $PWD and the completions from this rep=(${${rep#${PWD%%$words[2]*}}%${PWD#*$words[2]}}) - _description expl replacement - (( ! $#rep )) || compadd "$expl[@]" $rep + if (( $#rep )) && _tags replacement strings; then + _description expl replacement + compadd "$expl[@]" $rep + fi elif _popd || [[ $PREFIX != (\~|/|./|../)* && $#cdpath -ne 0 ]]; then local tdir tdir2 + # With cdablevars, we can convert foo/bar/... to ~foo/bar/... if # there is no directory foo. In that case we could also complete # variable names, but it hardly seems worth it. diff --git a/Completion/Builtins/_command b/Completion/Builtins/_command index 9f54aae80..23995dbbe 100644 --- a/Completion/Builtins/_command +++ b/Completion/Builtins/_command @@ -6,6 +6,8 @@ if [[ CURRENT -ge 3 ]]; then else local expl + _tags any:command commands || return 1 + _description expl 'external command' compadd "$expl[@]" "$@" - "${(k@)commands}" fi diff --git a/Completion/Builtins/_compdef b/Completion/Builtins/_compdef index 4208c2689..df25d44de 100644 --- a/Completion/Builtins/_compdef +++ b/Completion/Builtins/_compdef @@ -12,10 +12,14 @@ while [[ $words[base] = -* ]]; do done if [ "$delete" ]; then + _tags any:argument commands || return 1 + _description expl 'completed command' compadd "$expl[@]" - ${(k)_comps} else if [[ CURRENT -eq base ]]; then + _tags any:argument functions || return 1 + _description expl 'completion function' compadd "$expl[@]" - ${^fpath:/.}/_(|*[^~])(N:t) else diff --git a/Completion/Builtins/_disable b/Completion/Builtins/_disable index af4805c25..33c202864 100644 --- a/Completion/Builtins/_disable +++ b/Completion/Builtins/_disable @@ -1,22 +1,15 @@ #compdef disable -local prev="$words[CURRENT-1]" ret=1 expl +local prev="$words[CURRENT-1]" args -if [[ "$prev" = -*a* ]]; then - _description expl alias - compadd "$expl[@]" "$@" - "${(k@)aliases}" && ret=0 -fi -if [[ "$prev" = -*f* ]]; then - _description expl 'shell function' - compadd "$expl[@]" "$@" - "${(k@)functions}" && ret=0 -fi -if [[ "$prev" = -*r* ]]; then - _description expl 'reserved word' - compadd "$expl[@]" "$@" - "${(k@)reswords}" && ret=0 -fi -if [[ "$prev" != -* ]]; then - _description expl 'builtin command' - compadd "$expl[@]" "$@" - "${(k@)builtins}" && ret=0 -fi +args=() +[[ "$prev" = -*a* ]] && + tags=( 'aliases:alias:compadd - ${(@k)aliases} ${(@k)galiases} ) +[[ "$prev" = -*f* ]] && + tags=( "$tags[@]" 'functions:shell function:compadd - ${(@k)functions}' ) +[[ "$prev" = -*r* ]] && + tags=( "$tags[@]" 'reserved-words:reserved word:compadd - ${(@k)reswords}' ) +[[ "$prev" != -* ]] && + tags=( 'builtins:builtin command:compadd - ${(@k)builtins} ) -return ret +_alternative any "$args[@]" diff --git a/Completion/Builtins/_echotc b/Completion/Builtins/_echotc index 46bf38261..2193261a1 100644 --- a/Completion/Builtins/_echotc +++ b/Completion/Builtins/_echotc @@ -2,6 +2,8 @@ local expl +_tags any:argument capabilities || return 1 + _description expl 'terminal capability' compadd "$expl[@]" \ al dc dl do le up al bl cd ce cl cr dc dl do ho is le ma nd nl se so up diff --git a/Completion/Builtins/_enable b/Completion/Builtins/_enable index 7d15e9121..ae2bdc38c 100644 --- a/Completion/Builtins/_enable +++ b/Completion/Builtins/_enable @@ -1,22 +1,15 @@ #compdef enable -local prev="$words[CURRENT-1]" ret=1 expl +local prev="$words[CURRENT-1]" args -if [[ "$prev" = -*a* ]]; then - _description expl alias - compadd "$expl[@]" "$@" - "${(k@)dis_aliases}" "${(k@)dis_galiases}" && ret=0 -fi -if [[ "$prev" = -*f* ]]; then - _description expl 'shell function' - compadd "$expl[@]" "$@" - "${(k@)dis_functions}" && ret=0 -fi -if [[ "$prev" = -*r* ]]; then - _description expl 'reserved word' - compadd "$expl[@]" "$@" - "${(k@)dis_reswords}" && ret=0 -fi -if [[ "$prev" != -* ]]; then - _description expl 'builtin command' - compadd "$expl[@]" "$@" - "${(k@)dis_builtins}" && ret=0 -fi +args=() +[[ "$prev" = -*a* ]] && + tags=( 'aliases:alias:compadd - ${(@k)dis_aliases} ${(@k)dis_galiases} ) +[[ "$prev" = -*f* ]] && + tags=( "$tags[@]" 'functions:shell function:compadd - ${(@k)dis_functions}' ) +[[ "$prev" = -*r* ]] && + tags=( "$tags[@]" 'reserved-words:reserved word:compadd - ${(@k)dis_reswords}' ) +[[ "$prev" != -* ]] && + tags=( 'builtins:builtin command:compadd - ${(@k)dis_builtins} ) -return ret +_alternative any "$args[@]" diff --git a/Completion/Builtins/_functions b/Completion/Builtins/_functions index 81a56eb83..9e6925ce7 100644 --- a/Completion/Builtins/_functions +++ b/Completion/Builtins/_functions @@ -2,5 +2,7 @@ local expl +_tags argument:any functions || return 1 + _description expl 'shell function' compadd "$expl[@]" "$@" - "${(k@)functions}" diff --git a/Completion/Builtins/_hash b/Completion/Builtins/_hash index 4cb72b09c..24a9964b9 100644 --- a/Completion/Builtins/_hash +++ b/Completion/Builtins/_hash @@ -4,15 +4,23 @@ local expl if [[ "$words[2]" = -*d* ]]; then if compset -P 1 '*\='; then + _tags - -d-value files || return 1 + _path_files -g '*(-/)' else + _tags - -d named-directories || return 1 + _description expl 'named directory' compadd "$expl[@]" -q -S '=' - "${(@k)nameddirs}" fi elif compset -P 1 '*\='; then + _tags value executables || return 1 + _description expl 'executable file' _files "$expl[@]" -g '*(*)' else + _tags any:argument commands || return 1 + _description expl command compadd "$expl[@]" -q -S '=' - "${(@k)commands}" fi diff --git a/Completion/Builtins/_kill b/Completion/Builtins/_kill index 43ff40838..e2dc88dac 100644 --- a/Completion/Builtins/_kill +++ b/Completion/Builtins/_kill @@ -4,10 +4,10 @@ local list expl if compset -P 1 -; then - _tags signal || return 1 + _tags - -:signal signals || return 1 _description expl signal compadd "$expl[@]" $signals[1,-3] else - _alternative 'job:: _jobs' 'process:: _pids' + _alternative argument 'jobs:: _jobs' 'processes:: _pids' fi diff --git a/Completion/Builtins/_limits b/Completion/Builtins/_limits index 0072438c3..12e90e96a 100644 --- a/Completion/Builtins/_limits +++ b/Completion/Builtins/_limits @@ -2,5 +2,7 @@ local expl +_tags any:argument limits || return 1 + _description expl 'process limits' compadd "$expl[@]" ${${(f)"$(limit)"}%% *} diff --git a/Completion/Builtins/_pids b/Completion/Builtins/_pids index 0ffda900b..f96c11e2d 100644 --- a/Completion/Builtins/_pids +++ b/Completion/Builtins/_pids @@ -3,7 +3,9 @@ # If given the `-m <pattern>' option, this tries to complete only pids # of processes whose command line match the `<pattern>'. -local list expl match +local list expl match desc + +_tags any processes || return 1 if [[ "$1" = -m ]]; then match="${2}*" @@ -12,7 +14,12 @@ fi _description expl 'process ID' -list=("${(@Mr:COLUMNS-1:)${(f@)$(ps ${=compconfig[ps_listargs]:-$=compconfig[ps_args]} 2>/dev/null)}[2,-1]:#[ ]#${PREFIX}[0-9]#${SUFFIX}[ ]*${~match}}") +if _style processes description yes; then + list=("${(@Mr:COLUMNS-1:)${(f@)$(ps ${=compconfig[ps_listargs]:-$=compconfig[ps_args]} 2>/dev/null)}[2,-1]:#[ ]#${PREFIX}[0-9]#${SUFFIX}[ ]*${~match}}") + desc=(-ld list) +else + desc=() +fi -compadd "$expl[@]" "$@" -ld list - \ +compadd "$expl[@]" "$@" "$desc[@]" - \ ${${${(M)${(f)"$(ps $=compconfig[ps_args] 2>/dev/null)"}[2,-1]:#*${~match}}## #}%% *} diff --git a/Completion/Builtins/_popd b/Completion/Builtins/_popd index 9054befb7..5e4910f48 100644 --- a/Completion/Builtins/_popd +++ b/Completion/Builtins/_popd @@ -5,36 +5,39 @@ # way round if pushdminus is set). Note that this function is also called # from _cd for cd and pushd. -emulate -L zsh setopt extendedglob nonomatch -[[ $PREFIX = [-+]* ]] || return 1 +_tags any directory-stack || return 1 -local expl list lines revlines ret=1 i +! _style directory-stack prefix-needed yes || + [[ $PREFIX = [-+]* ]] || return 1 -IPREFIX=$PREFIX[1] -PREFIX=$PREFIX[2,-1] +local expl list lines revlines disp -# get the list of directories with their canonical number -# and turn the lines into an array, removing the current directory -lines=( ${${(f)"$(dirs -v)"}##0*} ) -if [[ ( $IPREFIX = - && ! -o pushdminus ) || - ( $IPREFIX = + && -o pushdminus ) ]]; then - integer i - revlines=( $lines ) - for (( i = 1; i <= $#lines; i++ )); do - lines[$i]="$((i-1)) -- ${revlines[-$i]##[0-9]#[ ]#}" - done +if _style directory-stack description yes; then + # get the list of directories with their canonical number + # and turn the lines into an array, removing the current directory + lines=("${PWD}" "${dirstack[@]}") + + if [[ ( $PREFIX[1] = - && ! -o pushdminus ) || + ( $PREFIX[1] = + && -o pushdminus ) ]]; then + integer i + revlines=( $lines ) + for (( i = 1; i <= $#lines; i++ )); do + lines[$i]="$((i-1)) -- ${revlines[-$i]##[0-9]#[ ]#}" + done + else + for (( i = 1; i <= $#lines; i++ )); do + lines[$i]="$i -- ${lines[$i]##[0-9]#[ ]#}" + done + fi + # get the array of numbers only + list=( ${PREFIX[1]}${^lines%% *} ) + disp=( -ld lines ) else - for (( i = 1; i <= $#lines; i++ )); do - lines[$i]="$i -- ${lines[$i]##[0-9]#[ ]#}" - done + list=( ${PREFIX[1]}{0..${#dirstack}} ) + disp=() fi -# get the array of numbers only -list=(${lines%% *}) -_description expl 'directory stack index' -compadd "$expl[@]" -ld lines -V dirs -Q - "$list[@]" && ret=0 -[[ -z $compstate[list] ]] && compstate[list]=list && ret=0 -[[ -n $compstate[insert] ]] && compstate[insert]=menu && ret=0 - -return ret + +_description -V expl 'directory stack index' +compadd "$expl[@]" "$@" -qS/ "$disp[@]" -Q - "$list[@]" diff --git a/Completion/Builtins/_sched b/Completion/Builtins/_sched index 38bf44a59..d3245f7ef 100644 --- a/Completion/Builtins/_sched +++ b/Completion/Builtins/_sched @@ -1,12 +1,19 @@ #compdef sched -local expl lines +local expl lines disp if [[ CURRENT -eq 2 ]]; then if compset -P -; then + _tags - - entries || return 1 + lines=(${(f)"$(sched)"}) + if _style entries description yes; then + disp=( -ld lines ) + else + disp=() + fi _description expl 'scheduled jobs' - [[ -z $lines ]] || compadd "$expl[@]" -ld lines - {1..$#lines} + [[ -z $lines ]] || compadd "$expl[@]" "$disp[@]" - {1..$#lines} else _message 'time specification' return 1 diff --git a/Completion/Builtins/_stat b/Completion/Builtins/_stat index 322f042ec..3f1b62ca3 100644 --- a/Completion/Builtins/_stat +++ b/Completion/Builtins/_stat @@ -5,6 +5,8 @@ local expl if [[ "$words[CURRENT-1]" = -[AH] ]]; then _arrays else + _tags any:argument elements || return 1 + _description expl 'inode element' [[ "$PREFIX[1]" = + ]] && compadd "$expl[@]" - +device +inode +mode +nlink +uid +gid +rdev +size \ diff --git a/Completion/Builtins/_trap b/Completion/Builtins/_trap index 0f0209914..5dbb2d284 100644 --- a/Completion/Builtins/_trap +++ b/Completion/Builtins/_trap @@ -6,6 +6,8 @@ if [[ CURRENT -eq 2 ]]; then compset -q _normal else + _tags any:argument signals || return 1 + _description expl signal compadd "$expl[@]" - "$signals[@]" fi diff --git a/Completion/Builtins/_unhash b/Completion/Builtins/_unhash index a23fd9025..6ccbc21a4 100644 --- a/Completion/Builtins/_unhash +++ b/Completion/Builtins/_unhash @@ -1,22 +1,14 @@ #compdef unhash -local fl="$words[2]" ret=1 expl +local fl="$words[2]" args -if [[ "$fl" = -*d* ]]; then - _description expl 'named directory' - compadd "$expl[@]" - "${(@k)nameddirs}" && ret=0 -fi -if [[ "$fl" = -*a* ]]; then - _description expl alias - compadd "$expl[@]" - "${(@k)aliases}" "${(@k)dis_aliases}" \ - "${(@k)galiases}" "${(@k)dis_galiases}" && ret=0 -fi -if [[ "$fl" = -*f* ]]; then - _description expl 'shell function' - compadd "$expl[@]" - "${(@k)functions}" "${(@k)dis_functions}" && ret=0 -fi -if [[ "$fl" != -* ]]; then - _command_names -e && ret=0 -fi +args=() +[[ "$fl" = -*d* ]] && + args=( 'named-directories:named directory:compadd - ${(@k)nameddirs}' ) +[[ "$fl" = -*a* ]] && + args=( "$args[@]" + 'aliases:alias:compadd - ${(@k)aliases} ${(@k)galiases} ${(@k)dis-aliases} ${(@k)dis-galiases}' ) +[[ "$fl != -* ]] && + args=( 'commands:: _command_names -e' ) -return ret +_alternative any:argument "$args[@]" diff --git a/Completion/Builtins/_wait b/Completion/Builtins/_wait index c1022a25f..04ad5e873 100644 --- a/Completion/Builtins/_wait +++ b/Completion/Builtins/_wait @@ -1,3 +1,3 @@ #compdef wait -_alternative 'job:: _jobs' 'process:: _pids' +_alternative argument:any 'jobs:: _jobs' 'processes:: _pids' diff --git a/Completion/Builtins/_which b/Completion/Builtins/_which index 41e7d20fd..6e9e0a460 100644 --- a/Completion/Builtins/_which +++ b/Completion/Builtins/_which @@ -1,14 +1,12 @@ #compdef which whence where type -local expl +local args -_description expl 'external command' -compadd "$expl[@]" "$@" - "${(k@)commands}" && ret=0 -_description expl 'builtin command' -compadd "$expl[@]" "$@" - "${(k@)builtins}" && ret=0 -_description expl 'shell function' -compadd "$expl[@]" "$@" - "${(k@)functions}" && ret=0 -_description expl 'alias' -compadd "$expl[@]" "$@" - "${(k@)aliases}" && ret=0 -_description expl 'reserved word' -compadd "$expl[@]" "$@" - "${(k@)reswords}" && ret=0 +args=( "$@" ) + +_alternative -O args any:argument \ + 'commands:external command:compadd - ${(k@)commands}' \ + 'builtins:builtin command:compadd - ${(k@)builtins}' \ + 'functions:shell function:compadd - ${(k@)functions}' \ + 'aliases:alias:compadd - ${(k@)aliases}' \ + 'reserved-words:reserved word:compadd - ${(k@)reswords}' diff --git a/Completion/Builtins/_zftp b/Completion/Builtins/_zftp index 7aa1d94e8..2728d1747 100644 --- a/Completion/Builtins/_zftp +++ b/Completion/Builtins/_zftp @@ -13,6 +13,8 @@ local subcom expl if [[ $words[1] = zftp ]]; then if [[ $CURRENT -eq 2 ]]; then + _tags command commands || return 1 + _description expl sub-command compadd "$expl[@]" open params user login type ascii binary mode put \ putat get getat append appendat ls dir local remote mkdir rmdir \ @@ -27,26 +29,27 @@ fi case $subcom in *(cd|ls|dir)) # complete remote directories - zfcd_match $PREFIX $SUFFIX + _tags "$subcom" directories && zfcd_match $PREFIX $SUFFIX ;; *(get(|at)|gcp|delete|remote)) # complete remote files - zfget_match $PREFIX $SUFFIX + _tags "$subcom" files && zfget_match $PREFIX $SUFFIX ;; *(put(|at)|pcp)) # complete local files - _files + _tags "$subcom" files && _files ;; *(open|anon|params)) # complete hosts: should do cleverer stuff with user names - _hosts + _tags "$subcom" hosts && _hosts ;; *(goto|mark)) # complete bookmarks. First decide if ncftp mode is go. + _tags "$subcom" bookmarks || return 1 _description expl bookmark if [[ $words[2] = -*n* ]]; then if [[ -f ~/.ncftp/bookmarks ]]; then @@ -61,6 +64,7 @@ case $subcom in *session) # complete sessions, excluding the current one. + _tags "$subcom" sessions || return 1 _description expl 'another FTP session' compadd "$expl[@]" - ${$(zftp session):#$ZFTP_SESSION} ;; @@ -69,6 +73,7 @@ case $subcom in # complete arguments like sess1:file1 sess2:file2 if [[ $PREFIX = *:* ]]; then # complete file in the given session + _tags "$subcom" files || return 1 local sess=${PREFIX%%:*} oldsess=$ZFTP_SESSION compset -p $(( $#sess + 1 )) [[ -n $sess ]] && zftp session $sess @@ -76,6 +81,7 @@ case $subcom in [[ -n $sess && -n $oldsess ]] && zftp session $oldsess else # note here we can complete the current session + _tags "$subcom" sessions || return 1 _description expl 'FTP session' compadd "$expl[@]" -S : - $(zftp session) fi diff --git a/Completion/Builtins/_zle b/Completion/Builtins/_zle index a153aabdd..21997ef62 100644 --- a/Completion/Builtins/_zle +++ b/Completion/Builtins/_zle @@ -3,9 +3,11 @@ local expl if [[ "$words[2]" = -N && CURRENT -eq 3 ]]; then + _tags any:argument functions || return 1 _description expl 'widget shell function' compadd "$expl[@]" "$@" - "${(k@)functions}" && ret=0 else + _tags any:argument widgets || return 1 _description expl widget compadd "$expl[@]" - "${(@k)widgets}" fi diff --git a/Completion/Builtins/_zmodload b/Completion/Builtins/_zmodload index 097911307..1a1097a7a 100644 --- a/Completion/Builtins/_zmodload +++ b/Completion/Builtins/_zmodload @@ -3,12 +3,15 @@ local fl="$words[2]" expl if [[ "$fl" = -*(a*u|u*a)* || "$fl" = -*a* && CURRENT -ge 4 ]]; then + _tags any:argument builtins || return 1 _description expl 'builtin command' compadd "$expl[@]" "$@" - "${(k@)builtins}" && ret=0 elif [[ "$fl" = -*u* ]]; then + _tags any:argument modules || return 1 _description expl module compadd "$expl[@]" - "${(@k)modules}" else + _tags any:argument files || return 1 _description expl 'module file' compadd "$expl[@]" - ${^module_path}/*.s[ol](N:t:r) fi |