diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-06-27 05:33:04 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-06-27 05:33:04 +0000 |
commit | 346825df86466cf151be61b9429ef2c1734e66ea (patch) | |
tree | bd3e1ccd947b47f974c62b4113c5276416de2c9f /Completion/Base/_tilde | |
parent | a2159285e80508bb682d90a71270fbddada8bd05 (diff) | |
download | zsh-346825df86466cf151be61b9429ef2c1734e66ea.tar.gz zsh-346825df86466cf151be61b9429ef2c1734e66ea.tar.xz zsh-346825df86466cf151be61b9429ef2c1734e66ea.zip |
zsh-3.1.5-pws-24 zsh-3.1.5-pws-24
Diffstat (limited to 'Completion/Base/_tilde')
-rw-r--r-- | Completion/Base/_tilde | 26 |
1 files changed, 24 insertions, 2 deletions
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[@]" |