Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: 5.3.1: allow included hosts to be completed



Sending this patch again after finding the instructions here: http://www.zsh.org/mla/patches.shtml

Currently, only the main config file is looked at for host entries to offer for completion. This patch modifies that behavior to also parse any included files for host entries.
--- /usr/share/zsh/functions/Completion/Unix/_ssh	2016-12-22 11:27:00.000000000 -0800
+++ packages/base/.local/share/zsh/functions/_ssh	2017-02-26 22:37:47.513422235 -0800
@@ -681,16 +681,21 @@
   fi
   if [[ -r $config ]]; then
     local key hosts host
-    while IFS=$'=\t ' read -r key hosts; do
-      if [[ "$key" == (#i)host ]]; then
-         for host in ${(z)hosts}; do
-            case $host in
-            (*[*?]*) ;;
-            (*) config_hosts+=("$host") ;;
-            esac
-         done
-      fi
-    done < "$config"
+    local filename configs=($config)
+    grep '^Include\b' "$config" | sed 's/\s\+/ /g' | cut -d' ' -f2 |
+    while read -r filename; do
+        config=$HOME/.ssh/$filename
+        while IFS=$'=\t ' read -r key hosts; do
+        if [[ "$key" == (#i)host ]]; then
+            for host in ${(z)hosts}; do
+                case $host in
+                (*[*?]*) ;;
+                (*) config_hosts+=("$host") ;;
+                esac
+            done
+        fi
+        done < "$config"
+    done
     if (( ${#config_hosts} )); then
       _wanted hosts expl 'remote host name' \
         compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts


Messages sorted by: Reverse Date, Date, Thread, Author