about summary refs log tree commit diff
path: root/Completion/User/_telnet
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/User/_telnet')
-rw-r--r--Completion/User/_telnet10
1 files changed, 8 insertions, 2 deletions
diff --git a/Completion/User/_telnet b/Completion/User/_telnet
index 54d9a0a2d..594dcf2e5 100644
--- a/Completion/User/_telnet
+++ b/Completion/User/_telnet
@@ -1,5 +1,11 @@
 #compdef telnet
 
+# Parameter used:
+#
+#  telnet_ports
+#    The associative array that maps a host name to a space-separated list of
+#    ports.
+
 _arguments -s \
   -{F,f,x} \
   '-8[allow 8-Bit data]' \
@@ -16,6 +22,6 @@ _arguments -s \
   '-l+[specify user]:user:' \
   '-n+[specify tracefile]:tracefile:_files' \
   '-r[rlogin like user interface]' \
-  ':host:_hosts' \
-  ':port:{ _hostports $line[2] "$expl[@]" }'
+  ':host:{ compadd "$expl[@]" - ${(k)telnet_ports} || _hosts "$expl[@]" }' \
+  ':port:{ if (( $+telnet_ports )); then compadd "$expl[@]" - ${=telnet_ports[$line[2]]}; else _message "port"; fi }'