about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:43:27 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:43:27 +0000
commit5af07c76cabe919de61ee09bd65b6a54ec163b85 (patch)
tree0e09e90036cb12dda3c516a2787a24dd527857ce
parent3dc051089213cc24a1dac02005d558f62a43e6bf (diff)
downloadzsh-5af07c76cabe919de61ee09bd65b6a54ec163b85.tar.gz
zsh-5af07c76cabe919de61ee09bd65b6a54ec163b85.tar.xz
zsh-5af07c76cabe919de61ee09bd65b6a54ec163b85.zip
moved from Completion/User/_user_at_host
-rw-r--r--Completion/Unix/Type/_user_at_host31
1 files changed, 31 insertions, 0 deletions
diff --git a/Completion/Unix/Type/_user_at_host b/Completion/Unix/Type/_user_at_host
new file mode 100644
index 000000000..b652242d3
--- /dev/null
+++ b/Completion/Unix/Type/_user_at_host
@@ -0,0 +1,31 @@
+#autoload
+
+# Complete user/host combinations. Normally this looks for the style
+# `users-hosts' for the tag `accounts'. A different tag may be given
+# with `-t tag'.
+# A `-' or `--' as the first argument is ignored.
+
+local suf tag=accounts
+
+if [[ "$1" = -t?* ]]; then
+  tag="${1[3,-1]}"
+  shift
+elif [[ "$1" = -t ]]; then
+  tag="$2"
+  shift 2
+fi
+
+[[ "$1" = -(|-) ]] && shift
+
+if [[ -prefix 1 *@ ]]; then
+  local user=${PREFIX%%@*}
+
+  compset -P 1 '*@'
+
+  _wanted -C user-at hosts expl "host for $user" \
+      _combination -s '[:@]' "${tag}" users-hosts users="$user" hosts "$@" -
+else
+  compset -S '@*' || suf="@"
+  _wanted users expl "user" \
+      _combination -s '[:@]' "${tag}" users-hosts users -S "$suf" -q "$@" -
+fi