From a2159285e80508bb682d90a71270fbddada8bd05 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Fri, 18 Jun 1999 10:55:45 +0000 Subject: zsh-3.1.5-pws-22 --- Completion/Base/_brace_parameter | 2 ++ Completion/Base/_vars | 19 ++++++++++++++++++- Completion/Builtins/_jobs | 2 +- Completion/Builtins/_kill | 3 ++- Completion/Builtins/_limits | 2 +- Completion/Builtins/_wait | 2 +- Completion/Builtins/_zftp | 13 +++++++++++++ Completion/Core/_normal | 2 +- Completion/Core/_path_files | 4 ++-- Completion/Core/compdump | 2 +- Completion/Core/compinit | 4 ++-- Completion/Makefile.in | 16 ++++++++++++++-- 12 files changed, 58 insertions(+), 13 deletions(-) (limited to 'Completion') diff --git a/Completion/Base/_brace_parameter b/Completion/Base/_brace_parameter index f688e175a..5993aecba 100644 --- a/Completion/Base/_brace_parameter +++ b/Completion/Base/_brace_parameter @@ -16,4 +16,6 @@ ls="$RBUFFER[${#SUFFIX}+1,-1]" n=${(M)#ls##\"#} q=${(M)lp%%\"#} +[[ n -gt 0 ]] && suf='' + _parameters -s "${q[1,-n-1]}" -S "$suf" -r '-:?#%+=[/' diff --git a/Completion/Base/_vars b/Completion/Base/_vars index f06562694..a40df7699 100644 --- a/Completion/Base/_vars +++ b/Completion/Base/_vars @@ -1,3 +1,20 @@ #compdef getopts read unset vared -compgen -v +# This will handle completion of keys of associative arrays, e.g. at +# `vared compconfig['. However, in this version the [ must be +# added by hand. + +if [[ $PREFIX = *\[* ]]; then + local var=${PREFIX%%\[*} + local elt="${PREFIX#*\]}${SUFFIX%\]}" + local addclose + compset -p $(( ${#var} + 1 )) + if ! compset -S \]; then + addclose=(-S ']') + fi + if [[ ${(tP)var} = assoc* ]]; then + compadd $addclose - ${(kP)var} + fi +else + compgen -v +fi diff --git a/Completion/Builtins/_jobs b/Completion/Builtins/_jobs index bce005b4e..9e2da24c6 100644 --- a/Completion/Builtins/_jobs +++ b/Completion/Builtins/_jobs @@ -1,3 +1,3 @@ -#compdef fg jobs +#compdef disown fg jobs compgen -j -P '%' diff --git a/Completion/Builtins/_kill b/Completion/Builtins/_kill index 979c87804..4f8c1db6d 100644 --- a/Completion/Builtins/_kill +++ b/Completion/Builtins/_kill @@ -9,7 +9,8 @@ else compgen -P '%' -j && ret=0 list=("$(ps 2>/dev/null)") - compgen -y '$list' -s '`ps 2>/dev/null | tail +2 | cut -c1-5`' && ret=0 + compgen -y '$list' -s '${${${(f)"$(ps 2>/dev/null)"}[2,-1]## #}%% *}' && + ret=0 return ret fi diff --git a/Completion/Builtins/_limits b/Completion/Builtins/_limits index be5c35593..6835a6244 100644 --- a/Completion/Builtins/_limits +++ b/Completion/Builtins/_limits @@ -1,3 +1,3 @@ #compdef limit unlimit -compgen -k "(${(j: :)${(f)$(limit)}%% *})" +compgen -s '${${(f)"$(limit)"}%% *}' diff --git a/Completion/Builtins/_wait b/Completion/Builtins/_wait index 0fadc087b..41d09c9b2 100644 --- a/Completion/Builtins/_wait +++ b/Completion/Builtins/_wait @@ -4,6 +4,6 @@ local list ret=1 compgen -P '%' -j && ret=0 list=("$(ps 2>/dev/null)") -compgen -y '$list' -s '`ps 2>/dev/null | tail +2 | cut -c1-5`' && ret=0 +compgen -y '$list' -s '${${${(f)"$(ps 2>/dev/null)"}[2,-1]## #}%% *}' && ret=0 return ret diff --git a/Completion/Builtins/_zftp b/Completion/Builtins/_zftp index 71404fb2b..8792e21a7 100644 --- a/Completion/Builtins/_zftp +++ b/Completion/Builtins/_zftp @@ -43,6 +43,19 @@ case $subcom in compgen -k hosts ;; + *(goto|mark)) + # complete bookmarks. First decide if ncftp mode is go. + if [[ $words[2] = -*n* ]]; then + if [[ -f ~/.ncftp/bookmarks ]]; then + compadd - $(awk -F, 'NR > 2 { print $1 }' ~/.ncftp/bookmarks) + fi + else + if [[ -f ${ZFTP_BMFILE:=${ZDOTDIR:-$HOME}/.zfbkmarks} ]]; then + compadd - $(awk '{print $1}' $ZFTP_BMFILE) + fi + fi + ;; + *) # dunno... try ordinary completion after all. unset _compskip diff --git a/Completion/Core/_normal b/Completion/Core/_normal index ed7243bb1..ba7f2123f 100644 --- a/Completion/Core/_normal +++ b/Completion/Core/_normal @@ -20,7 +20,7 @@ elif [[ "$command" == */* ]]; then cmd2="${command:t}" else cmd1="$command" - eval cmd2=$(whence -p $command) + cmd2=$(whence -p $command) fi # See if there are any matching pattern completions. diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files index 332aba017..d0d1c6a0a 100644 --- a/Completion/Core/_path_files +++ b/Completion/Core/_path_files @@ -231,7 +231,7 @@ for prepath in "$prepaths[@]"; do # See which of them match what's on the line. tmp2=("$tmp1[@]") - compadd -D tmp1 "$ignore[@]" - "${(@)tmp1##*/}" + compadd -D tmp1 "$ignore[@]" - "${(@)tmp1:t}" # If no file matches, save the expanded path and continue with # the outer loop. @@ -240,7 +240,7 @@ for prepath in "$prepaths[@]"; do if [[ "$tmp2[1]" = */* ]]; then tmp2=( "${(@)tmp2#${prepath}${realpath}}" ) if [[ "$tmp2[1]" = */* ]]; then - exppaths=( "$exppaths[@]" ${^tmp2%/*}/${tpre}${tsuf} ) + exppaths=( "$exppaths[@]" ${^tmp2:h}/${tpre}${tsuf} ) else exppaths=( "$exppaths[@]" ${tpre}${tsuf} ) fi diff --git a/Completion/Core/compdump b/Completion/Core/compdump index 8288ccdd4..5ee04e028 100644 --- a/Completion/Core/compdump +++ b/Completion/Core/compdump @@ -74,7 +74,7 @@ done)) # print them out: about five to a line looks neat while (( $#_d_als )); do - print -n autoload + print -n autoload -U for (( _i = 0; _i < 5; _i++ )); do if (( $#_d_als )); then print -n " $_d_als[1]" diff --git a/Completion/Core/compinit b/Completion/Core/compinit index af2467bec..23bc94cf9 100644 --- a/Completion/Core/compinit +++ b/Completion/Core/compinit @@ -194,7 +194,7 @@ compdef() { # and probably do autoloading. func="$1" - [[ -n "$autol" ]] && autoload "$func" + [[ -n "$autol" ]] && autoload -U "$func" shift case "$type" in @@ -363,7 +363,7 @@ if [[ -z "$_i_done" ]]; then fi ;; (\#autoload) - autoload ${_i_file:t} + autoload -U ${_i_file:t} ;; esac done diff --git a/Completion/Makefile.in b/Completion/Makefile.in index 8b7776a7f..0ac4de304 100644 --- a/Completion/Makefile.in +++ b/Completion/Makefile.in @@ -55,7 +55,14 @@ install.fns: $(sdir_top)/mkinstalldirs $(fndir) || exit 1; \ for file in $(FUNCTIONS_INSTALL); do \ if test -f $$file; then \ - $(INSTALL_DATA) $$file $(fndir) || exit 1; \ + if test x$(FUNCTIONS_SUBDIRS) != x -a \ + x$(FUNCTIONS_SUBDIRS) != xno; then \ + subdir="`echo $$file | sed -e 's%/.*%%'`"; \ + $(sdir_top)/mkinstalldirs $(fndir)/$$subdir || exit 1; \ + $(INSTALL_DATA) $$file $(fndir)/$$subdir || exit 1; \ + else \ + $(INSTALL_DATA) $$file $(fndir) || exit 1; \ + fi; \ fi; \ done; \ fi; \ @@ -65,7 +72,12 @@ uninstall.fns: if test x$(fndir) != x && test x$(fndir) != xno; then \ for file in $(FUNCTIONS_INSTALL); do \ if test -f $$file; then \ - rm -f "$(fndir)/`echo $$file | sed -e 's%^.*/%%'`"; \ + if test x$(FUNCTIONS_SUBDIRS) != x -a \ + x$(FUNCTIONS_SUBDIRS) != xno; then \ + rm -f $(fndir)/$$file; \ + else \ + rm -f "$(fndir)/`echo $$file | sed -e 's%^.*/%%'`"; \ + fi; \ fi; \ done; \ fi; \ -- cgit 1.4.1