about summary refs log tree commit diff
path: root/Completion/User/_rlogin
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/User/_rlogin')
-rw-r--r--Completion/User/_rlogin19
1 files changed, 14 insertions, 5 deletions
diff --git a/Completion/User/_rlogin b/Completion/User/_rlogin
index aa66b8f01..898f10870 100644
--- a/Completion/User/_rlogin
+++ b/Completion/User/_rlogin
@@ -20,7 +20,7 @@ _rlogin () {
       ':remote host name:_rlogin_hosts'
     ;;
   rsh|remsh)
-    local state line ret=1
+    local context state line ret=1
     typeset -A opt_args
 
     _arguments -s \
@@ -48,13 +48,18 @@ _rlogin () {
 
     if [[ -n "$state" ]]; then
       if compset -P '*:'; then
+        _tags "$context" files || return 1
+
 	_files && ret=0
       elif compset -P '*@'; then
+        _tags "$context" hosts || return 1
+
 	_rlogin_hosts -S: -q && ret=0
       else
-	_files && ret=0
-	_rlogin_all_hosts -S: -q && ret=0
-	_rlogin_users -S@ -q && ret=0
+        _alternative "$context" \
+	    'files:: _files' \
+	    'hosts:: _rlogin_all_hosts -qS:' \
+	    'users:: _rlogin_users -qS@' && ret=0
       fi
     fi
     return ret
@@ -63,10 +68,12 @@ _rlogin () {
 }
 
 _rlogin_users () {
-  _combination accounts_users_hosts users "$@"
+  _tags any users && _combination accounts_users_hosts users "$@"
 }
 
 _rlogin_hosts () {
+  _tags any hosts || return 1
+
   if [[ "$IPREFIX" == *@ ]]; then
     _combination accounts_users_hosts "users=${IPREFIX/@}" hosts "$@"
   else
@@ -76,6 +83,8 @@ _rlogin_hosts () {
 }
 
 _rlogin_all_hosts () {
+  _tags any hosts || return 1
+
   _combination accounts_users_hosts hosts "$@"
 }