fix host completion
authorJoerg Jaspert <joerg@debian.org>
Sun, 5 May 2013 21:59:00 +0000 (23:59 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sun, 5 May 2013 21:59:00 +0000 (23:59 +0200)
.zsh/45_Completion.zsh

index 43c552a..5bd073b 100644 (file)
@@ -95,21 +95,24 @@ if is42; then
     [[ -r ~/.ssh/debian_known_hosts ]] && _ssh_debian_hosts=(${${${${(f)"$(<$HOME/.ssh/debian_known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_debian_hosts=()
     [[ -r /etc/ssh/ssh_known_hosts ]] && _ssh_etc_hosts=(${${${${(f)"$(</etc/ssh/ssh_known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_etc_hosts=()
     [[ -r /etc/hosts ]] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}} || _etc_hosts=()
+    [[ -r ${HOME}/.ssh/config ]] && _ssh_config_hosts=(${=${${${${(@M)${(f)"$(<$HOME/.ssh/config)"}:#Host *}#Host }:#*\**}:#*\?*}}) || _ssh_config_hosts=()
 else
     _ssh_hosts=()
     _ssh_debian_hosts=()
     _ssh_etc_hosts=()
     _etc_hosts=()
+    _ssh_config_hosts=()
 fi
 hosts=(
     ${HOST}
+    "$_ssh_config_hosts[@]"
     "$_ssh_hosts[@]"
     "$_ssh_debian_hosts[@]"
     "$_ssh_etc_hosts[@]"
     "$_etc_hosts[@]"
     localhost
 )
-zstyle ':completion:*:hosts' hosts $hosts
+zstyle ':completion::*:*:*:hosts' hosts $hosts
 
 # Don't complete uninteresting users...
 zstyle ':completion:*:*:*:users' ignored-patterns \