* Advantages of using _argument states
@ 2006-11-14 21:29 Nikolai Weibull
2006-11-15 10:27 ` Peter Stephenson
0 siblings, 1 reply; 2+ messages in thread
From: Nikolai Weibull @ 2006-11-14 21:29 UTC (permalink / raw)
To: Zsh hackers list
What are the advantages and disadvantages of using _argument states
over writing functions that generate the matches, i.e,
'*-chmod[change mode of file]:mode:->modes'
versus
'*-chmod[change mode of file]:mode:_modes'
(or perhaps __modes to not clutter the Type-completion namespace)?
As far as I can tell, the only difference (and an obvious one at that)
is that states result in a big case-statement but you avoid extra
functions, whereas writing a function adds an extra function, but
saves us from the big case-statement.
I've gone over the documentation a bunch of times and I've been
looking through completion definitions without seeing any point to
using states over functions.
Am I correct in my assessment that they're basically two ways of doing
the same thing and the difference between them is the one I wrote
about above?
Also, writing a function makes it easier to turn that into a Type
completion later on, if need be.
(By the way, I'm writing a completion definition for mkisofs and growisofs.)
Thanks!
nikolai
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Advantages of using _argument states
2006-11-14 21:29 Advantages of using _argument states Nikolai Weibull
@ 2006-11-15 10:27 ` Peter Stephenson
0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2006-11-15 10:27 UTC (permalink / raw)
To: Nikolai Weibull; +Cc: Zsh hackers list
"Nikolai Weibull" <now@bitwi.se> wrote:
> As far as I can tell, the only difference (and an obvious one at that)
> is that states result in a big case-statement but you avoid extra
> functions, whereas writing a function adds an extra function, but
> saves us from the big case-statement.
>
> I've gone over the documentation a bunch of times and I've been
> looking through completion definitions without seeing any point to
> using states over functions.
>
> Am I correct in my assessment that they're basically two ways of doing
> the same thing and the difference between them is the one I wrote
> about above?
There's no hidden piece of magic in states beyond what's documented, no.
Potentially they allow more complicated logic inline:
_arguments 'blah:blah:->blahstate' && return 0
blah blah blah any old stuff
case $state in
(blahstate)
blah blah && return 0 # could run _blah here, of course
;;
esac
blah blah some other stuff
If you'd used a function then you'd have had to bury the extra logic
in the function or at the end of the _arguments line (_alternative or
whatever). If your particular case doesn't have any of these complications
then a function is probably neater.
--
Peter Stephenson <pws@csr.com> Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070
To access the latest news from CSR copy this link into a web browser: http://www.csr.com/email_sig.php
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-11-15 10:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-14 21:29 Advantages of using _argument states Nikolai Weibull
2006-11-15 10:27 ` Peter Stephenson
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).