diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 2000-02-25 09:53:18 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 2000-02-25 09:53:18 +0000 |
commit | 39b2b5eb2a3a1889e78eb2b3f101f2c529c5bf03 (patch) | |
tree | a81c50993f5d3a288524f30e45abca7ecf60fec1 /Completion/User/_tilde_files | |
parent | 6785dcb5c920b6be812b4d1a70ce53ed47ff2f30 (diff) | |
download | zsh-39b2b5eb2a3a1889e78eb2b3f101f2c529c5bf03.tar.gz zsh-39b2b5eb2a3a1889e78eb2b3f101f2c529c5bf03.tar.xz zsh-39b2b5eb2a3a1889e78eb2b3f101f2c529c5bf03.zip |
zsh-workers/9870
Diffstat (limited to 'Completion/User/_tilde_files')
-rw-r--r-- | Completion/User/_tilde_files | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Completion/User/_tilde_files b/Completion/User/_tilde_files new file mode 100644 index 000000000..6fb393dc5 --- /dev/null +++ b/Completion/User/_tilde_files @@ -0,0 +1,38 @@ +#autoload + +# Complete files and expand tilde expansions in it. + +if (( $argv[(I)-W*] )); then + _files "$@" + return +fi + +case "$PREFIX" in +\~/*) + IPREFIX="${IPREFIX}${HOME}/" + PREFIX="${PREFIX[3,-1]}" + _files "$@" -W "${HOME}" + ;; +\~*/*) + local user="${PREFIX[2,-1]%%/*}" + + if (( $+userdirs[$user] )); then + user="$userdirs[$user]" + elif (( $+nameddirs[$user] )); then + user="$nameddirs[$user]" + else + _message "unknown user \`$user'" + return 1 + fi + IPREFIX="${IPREFIX}${user%/}/" + PREFIX="${PREFIX#*/}" + _files "$@" -W "$user" + ;; +\~*) + compset -P '?' + _users "$@" + ;; +*) + _files "$@" + ;; +esac |