about summary refs log tree commit diff
path: root/Completion/User/_telnet
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-09-13 18:22:21 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-09-13 18:22:21 +0000
commit6818d4f69732c2547f589cba9d9c7e0b73ee6310 (patch)
tree9f79bd01cc6d0e86db57186815dbe4e3f0397f31 /Completion/User/_telnet
parentf97255d093f9d67f76a7ded72d44e463d11a0f20 (diff)
downloadzsh-6818d4f69732c2547f589cba9d9c7e0b73ee6310.tar.gz
zsh-6818d4f69732c2547f589cba9d9c7e0b73ee6310.tar.xz
zsh-6818d4f69732c2547f589cba9d9c7e0b73ee6310.zip
zsh-workers/7815
Diffstat (limited to 'Completion/User/_telnet')
-rw-r--r--Completion/User/_telnet38
1 files changed, 32 insertions, 6 deletions
diff --git a/Completion/User/_telnet b/Completion/User/_telnet
index 594dcf2e5..82fd6b21c 100644
--- a/Completion/User/_telnet
+++ b/Completion/User/_telnet
@@ -2,9 +2,11 @@
 
 # Parameter used:
 #
-#  telnet_ports
-#    The associative array that maps a host name to a space-separated list of
-#    ports.
+#  telnet_hosts_ports_users
+#    The array that contains 3-tuples `host:port:user'.
+
+local state line expl
+typeset -A options
 
 _arguments -s \
   -{F,f,x} \
@@ -19,9 +21,33 @@ _arguments -s \
   '-d[debug mode]' \
   '-e+[specify escape character]:escape character:' \
   '-k+:realm:' \
-  '-l+[specify user]:user:' \
+  '-l+[specify user]:user:->users' \
   '-n+[specify tracefile]:tracefile:_files' \
   '-r[rlogin like user interface]' \
-  ':host:{ compadd "$expl[@]" - ${(k)telnet_ports} || _hosts "$expl[@]" }' \
-  ':port:{ if (( $+telnet_ports )); then compadd "$expl[@]" - ${=telnet_ports[$line[2]]}; else _message "port"; fi }'
+  ':host:->hosts' \
+  ':port:->ports'
+
+case "$state" in
+hosts)
+  _description expl 'host'
+  _combination telnet_hosts_ports_users \
+    ${options[-l]:+users=${options[-l]:q}} \
+    hosts "$expl[@]"
+  ;;
+
+ports)
+  _description expl 'port'
+  _combination telnet_hosts_ports_users \
+    ${options[-l]:+users=${options[-l]:q}} \
+    hosts="${line[2]:q}" \
+    ports "$expl[@]"
+  ;;
 
+users)
+  _description expl 'user'
+  _combination telnet_hosts_ports_users \
+    ${line[2]:+hosts="${line[2]:q}"} \
+    ${line[3]:+ports="${line[3]:q}"} \
+    users "$expl[@]"
+  ;;
+esac