diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2006-11-14 12:12:03 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2006-11-14 12:12:03 +0000 |
commit | b50e035a8aa57e7b1aa92d5c40afd45b08234f1f (patch) | |
tree | 01c009dbf739689b4f7937294dcd04910a1f1310 /Completion/Unix/Command | |
parent | 81fe83008e48ca286d359e6e30ee36fbd4b9fe68 (diff) | |
download | zsh-b50e035a8aa57e7b1aa92d5c40afd45b08234f1f.tar.gz zsh-b50e035a8aa57e7b1aa92d5c40afd45b08234f1f.tar.xz zsh-b50e035a8aa57e7b1aa92d5c40afd45b08234f1f.zip |
users/10979: ssh completion uses config file from -F if present
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r-- | Completion/Unix/Command/_ssh | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/Completion/Unix/Command/_ssh b/Completion/Unix/Command/_ssh index f241c82c9..d31e60760 100644 --- a/Completion/Unix/Command/_ssh +++ b/Completion/Unix/Command/_ssh @@ -323,6 +323,8 @@ _ssh_users () { _ssh_hosts () { local -a config_hosts + local config + integer ind if [[ "$IPREFIX" == *@ ]]; then _combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@" @@ -330,7 +332,12 @@ _ssh_hosts () { _combination -s '[:@]' my-accounts users-hosts \ ${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@" fi - if [[ -r "$HOME/.ssh/config" ]]; then + if (( ind = ${words[(I)-F]} )); then + config=$words[ind+1] + else + config="$HOME/.ssh/config" + fi + if [[ -r $config ]]; then local IFS=$'\t ' key hosts host while read key hosts; do if [[ "$key" == (#i)host ]]; then @@ -341,7 +348,7 @@ _ssh_hosts () { esac done fi - done < "$HOME/.ssh/config" + done < "$config" if (( ${#config_hosts} )); then _wanted hosts expl 'remote host name' \ compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts |