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

PATCH: Re: Make the `users-hosts' style take precedence?

Bart Schaefer wrote:

> I have these styles:
> zstyle -e ':completion:*:(ssh|scp):*' hosts 'reply=(
>     ${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) \
> 		     /dev/null)"}%%[# ]*}//,/ }
>     ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*}
>     )'
> zstyle ':completion:*:(ssh|scp):*:my-accounts' users-hosts \
>     schaefer@{candle,dazzle,gleam,chimney}.brasslantern.com
> When completing after `ssh schaefer@', I'd like to be offered only those
> host names that came from the users-hosts style, and not all the others
> from the hosts style.  How do I accomplish this?  I'd use the tag-order
> style, except that `my-accounts' is not a "real" tag for this purpose.

Hm, that's what I get.

> One other oddity:  If I type `ssh @', then move the cursor back so it's
> over the `@', and then press TAB, I would expect to complete user names
> because that's what should appear to the left of an `@'.  Instead it
> offers both users and host names -- but in THIS case, the only hosts
> offered *are* those from the users-hosts style.

But this one I could reproduce.  Let's make _ssh even smarter.


Index: Completion/Unix/Command/_ssh
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_ssh,v
retrieving revision 1.2
diff -u -r1.2 _ssh
--- Completion/Unix/Command/_ssh	2001/05/29 17:54:37	1.2
+++ Completion/Unix/Command/_ssh	2001/07/24 07:09:34
@@ -143,6 +143,8 @@
         if compset -P '*@'; then
 	  _wanted hosts expl 'remote host name' _ssh_hosts && ret=0
+        elif compset -S '@*'; then
+          _wanted users expl 'login name' _ssh_users -S '' && ret=0
           if (( $+opt_args[-l] )); then

Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx

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