* PATCH: _rlogin splits up into three functions (still one file)
@ 2000-09-19 5:10 Bart Schaefer
0 siblings, 0 replies; 3+ messages in thread
From: Bart Schaefer @ 2000-09-19 5:10 UTC (permalink / raw)
To: zsh-workers
For consideration (i.e., not yet committed). This makes it a little easier
to write a wrapper, e.g. Jay's Kerberized version could become
#compdef krlogin krsh krcp
compdef ${words[1]:t:s/k/_/} ${words[1]:t}
_rlogin "$@"
Though of course that needs to become documented before he can rely on it.
Index: Completion/User/_rlogin
===================================================================
@@ -1,15 +1,18 @@
#compdef rlogin rsh remsh rcp
+[[ $_comps[rsh] == _rlogin ]] && compdef _rsh rsh
+[[ $_comps[remsh] == _rlogin ]] && compdef _rsh remsh
+[[ $_comps[rcp] == _rlogin ]] && compdef _rcp rcp
+
_rlogin () {
- case "${words[1]:t}" in
- rlogin)
_arguments -s \
'-8[allow 8-Bit data]' \
'-e-[specify escape character]:escape character:' \
'-l[specify login user name]:login as:_rlogin_users' \
':remote host name:_rlogin_hosts'
- ;;
- rsh|remsh)
+}
+
+_rsh() {
local context state line ret=1
typeset -A opt_args
@@ -26,8 +29,9 @@
_normal && ret=0
fi
return ret
- ;;
- rcp)
+}
+
+_rcp () {
local curcontext="$curcontext" state line ret=1 expl
typeset -A opt_args
@@ -49,8 +53,6 @@
fi
fi
return ret
- ;;
- esac
}
_rlogin_users () {
@@ -71,4 +73,4 @@
_tags hosts && _combination -s '[:@]' my-accounts users-hosts hosts "$@"
}
-_rlogin "$@"
+$_comps[${words[1]:t}] "$@"
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PATCH: _rlogin splits up into three functions (still one file)
@ 2000-10-04 9:54 Sven Wischnowsky
2000-10-04 16:03 ` Bart Schaefer
0 siblings, 1 reply; 3+ messages in thread
From: Sven Wischnowsky @ 2000-10-04 9:54 UTC (permalink / raw)
To: zsh-workers
Bart Schaefer wrote:
> For consideration (i.e., not yet committed). This makes it a little easier
> to write a wrapper, e.g. Jay's Kerberized version could become
>
> #compdef krlogin krsh krcp
> compdef ${words[1]:t:s/k/_/} ${words[1]:t}
> _rlogin "$@"
>
> Though of course that needs to become documented before he can rely on it.
Hmhm.
This gave me the idea of adding one more (probably optional, i.e. not
used everywhere) level of indirection when mapping a command name to a
completion function. So that _rlogin could offer the `services'
`_rlogin', `_rsh' and whatnot. And users could then just do
compdef _rsh krsh
And the completion system would know that `_rsh' is really in the file
`_rlogin' and the case-switch in _rlogin would use the `service' `rsh'
is mapped to.
But maybe this is just a uglier version of what Bart suggests. But I'm
not really happy with:
> +[[ $_comps[rsh] == _rlogin ]] && compdef _rsh rsh
> +[[ $_comps[remsh] == _rlogin ]] && compdef _rsh remsh
> +[[ $_comps[rcp] == _rlogin ]] && compdef _rcp rcp
That just cries for being automated by compdef, doesn't it?
Otherwise it looks fine, I think. I'm not yet quite sure what this
does with the control flow of, e.g., _pbm (where it is combined with a
pattern), but, yes, looks promising.
Bye
Sven
--
Sven Wischnowsky wischnow@informatik.hu-berlin.de
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PATCH: _rlogin splits up into three functions (still one file)
2000-10-04 9:54 Sven Wischnowsky
@ 2000-10-04 16:03 ` Bart Schaefer
0 siblings, 0 replies; 3+ messages in thread
From: Bart Schaefer @ 2000-10-04 16:03 UTC (permalink / raw)
To: zsh-workers
On Oct 4, 11:54am, Sven Wischnowsky wrote:
}
} Bart Schaefer wrote:
}
} > #compdef krlogin krsh krcp
} > compdef ${words[1]:t:s/k/_/} ${words[1]:t}
} > _rlogin "$@"
I just realized that the above won't work properly unless one of the k*
forms is the first thing completed. If _rlogin has already been auto-
loaded, call to _rlogin there is wrong.
It could be written
[[ $functions[_rlogin] == "builtin autoload -X" ]] &&
_rlogin "$@" || $_comps[${words[1]:t}] "$@"
or some such, but that's pretty silly.
So ...
} This gave me the idea of adding one more (probably optional, i.e. not
} used everywhere) level of indirection when mapping a command name to a
} completion function. So that _rlogin could offer the `services'
} `_rlogin', `_rsh' and whatnot.
This actually sounds like a reasonable idea. There'd have to be a way
for the #compdef tag line to register all the "services" provided by the
file in which the tag appears. I still don't see any obvious way to
fully automate this part --
} > +[[ $_comps[rsh] == _rlogin ]] && compdef _rsh rsh
} > +[[ $_comps[remsh] == _rlogin ]] && compdef _rsh remsh
} > +[[ $_comps[rcp] == _rlogin ]] && compdef _rcp rcp
-- but I haven't been thinking about it for very long.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2000-10-04 16:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-09-19 5:10 PATCH: _rlogin splits up into three functions (still one file) Bart Schaefer
2000-10-04 9:54 Sven Wischnowsky
2000-10-04 16:03 ` Bart Schaefer
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).