From 346825df86466cf151be61b9429ef2c1734e66ea Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Sun, 27 Jun 1999 05:33:04 +0000 Subject: zsh-3.1.5-pws-24 --- Completion/Base/_tilde | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'Completion/Base/_tilde') diff --git a/Completion/Base/_tilde b/Completion/Base/_tilde index c24c65701..d03030821 100644 --- a/Completion/Base/_tilde +++ b/Completion/Base/_tilde @@ -7,10 +7,32 @@ # `(( compstate[nmatches] )) || compgen -nu -qS/' # below that. +local c s dirs list + if [[ "$SUFFIX" = */* ]]; then ISUFFIX="/${SUFFIX#*/}$ISUFFIX" SUFFIX="${SUFFIX%%/*}" - compgen -nu -S '' + s=(-S '') else - compgen -nu -qS/ + s=(-qS/) fi + +if compset -P +; then + dirs="$(dirs -v)" + list=("${(f)dirs}") + [[ -o pushdminus ]] && dirs="$(awk '{ $1 = '$#list' - $1 - 1; + printf("%s\t%s\n", $1, $2); }' <<<$dirs)" + list=("${(@)list% *}") + c=(-y '$dirs' -k "($list)") +elif compset -P -; then + dirs="$(dirs -v)" + list=("${(f)dirs}") + [[ ! -o pushdminus ]] && dirs="$(awk '{ $1 = '$#list' - $1 - 1; + printf("%s\t%s\n", $1, $2); }' <<<$dirs)" + list=("${(@)list% *}") + c=(-y '$dirs' -k "($list)") +else + c=(-nu) +fi + +compgen "$c[@]" "$s[@]" -- cgit 1.4.1