zsh-users
 help / color / mirror / code / Atom feed
* Re: _arguments question
@ 2000-07-13  8:57 Sven Wischnowsky
  2000-07-13 15:20 ` Matt Armstrong
  0 siblings, 1 reply; 4+ messages in thread
From: Sven Wischnowsky @ 2000-07-13  8:57 UTC (permalink / raw)
  To: zsh-users


Matt Armstrong wrote:

> I have this completion function that I have a question on:
> 
> _p4_submit () {
>     _arguments \
>         '(-i)-c[changelist#]:changelist #' \
>         '(-c)-i[input from stddin]' \
>         ':submit file:_files'
> }       
> 
> I have made -i and -c mutually exclusive.  How can I make all three
> mutually exclusive?  This command accepts only one of the three
> possible arguments.

To say that with either of the options, the argument may not be
completed, you include either its number or a `:' in their exclusion
lists (the `:' means that no argument at all may be completed after
the option).

To say that after the argument no option should be completed, there
are at least two ways. Either you give it a exclusion list, too
(`(-c -i):submit ...') or you use the -A option to _arguments:

    _arguments -A '' \
        '(: -i)-c[changelist#]:changelist #' \
        '(: -c)-i[input from stddin]' \
        ':submit file:_files'

The argument given to -A (the '' in the example) can be used to give a 
pattern matching strings that should be silently accepted and should
not be considered to be normal arguments. E.g. if there may be other
options than the ones described, you would use `-A "-*"' to say that
any string starting with a hyphen should be ignored when trying to
determine if a string on the line is an argument or something else.

Bye
 Sven


--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: _arguments question
  2000-07-13  8:57 _arguments question Sven Wischnowsky
@ 2000-07-13 15:20 ` Matt Armstrong
  2000-07-13 15:56   ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Matt Armstrong @ 2000-07-13 15:20 UTC (permalink / raw)
  To: Sven Wischnowsky; +Cc: zsh-users

On Thu, Jul 13, 2000 at 10:57:20AM +0200, Sven Wischnowsky wrote:
> 
> Matt Armstrong wrote:
> 
> > I have this completion function that I have a question on:
> > 
> > _p4_submit () {
> >     _arguments \
> >         '(-i)-c[changelist#]:changelist #' \
> >         '(-c)-i[input from stddin]' \
> >         ':submit file:_files'
> > }       
> > 
> > I have made -i and -c mutually exclusive.  How can I make all three
> > mutually exclusive?  This command accepts only one of the three
> > possible arguments.
> 
> To say that with either of the options, the argument may not be
> completed, you include either its number or a `:' in their exclusion
> lists (the `:' means that no argument at all may be completed after
> the option).

Ahh, neat trick.  I would suggest adding this to the man page -- I
could not find it.


> To say that after the argument no option should be completed, there
> are at least two ways. Either you give it a exclusion list, too
> (`(-c -i):submit ...') or you use the -A option to _arguments:
> 
>     _arguments -A '' \
>         '(: -i)-c[changelist#]:changelist #' \
>         '(: -c)-i[input from stddin]' \
>         ':submit file:_files'
> 
> The argument given to -A (the '' in the example) can be used to give
> a pattern matching strings that should be silently accepted and
> should not be considered to be normal arguments. E.g. if there may
> be other options than the ones described, you would use `-A "-*"' to
> say that any string starting with a hyphen should be ignored when
> trying to determine if a string on the line is an argument or
> something else.

Thanks.  :-(  I should have seen that in the docs.


P.S. I was worried that this new completion stuff would take zsh too
far down the road of making zsh the "Emacs of shells."  But now I am
beginning to really like it.  Thanks for all the work you've put into
it -- this is not a trivial task.

-- 
matt


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: _arguments question
  2000-07-13 15:20 ` Matt Armstrong
@ 2000-07-13 15:56   ` Bart Schaefer
  0 siblings, 0 replies; 4+ messages in thread
From: Bart Schaefer @ 2000-07-13 15:56 UTC (permalink / raw)
  To: Matt Armstrong; +Cc: zsh-users

On Jul 13,  8:20am, Matt Armstrong wrote:
} Subject: Re: _arguments question
}
} > To say that with either of the options, the argument may not be
} > completed, you include either its number or a `:' in their exclusion
} > lists (the `:' means that no argument at all may be completed after
} > the option).
} 
} Ahh, neat trick.  I would suggest adding this to the man page -- I
} could not find it.

In the entry for _arguments:

     Each of the six forms of SPEC (yes, there are six, keep track of
     the nestings) may be preceded by a list of option names and
     argument numbers with which the option or argument described is
     mutually exclusive.  This list is given in parentheses, as in
     `(-two -three 1)-one:...' or `(-foo):...'.  In the first example,
     the options `-two' and `-three' and the first argument will not be
     offered as possible completions if the option `-one' is on the
     line before the cursor, and in the second example the option
     `-foo' will not be offered if the argument described by the
     specification is on the line.

     The list may also contain a single star (*) as one of its elements
     to specify that the description for the rest arguments (i.e. a
     specification of the form `*:...') should not be used, a colon (:)
     to specify that the descriptions for all normal (non-option-)
     arguments should not be used and a hyphen (-) to specify that the
     descriptions for all options should not be used.  This paragraph
     desperately needs rewriting.


-- 
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] 4+ messages in thread

* _arguments question
@ 2000-07-12 17:40 Matt Armstrong
  0 siblings, 0 replies; 4+ messages in thread
From: Matt Armstrong @ 2000-07-12 17:40 UTC (permalink / raw)
  To: zsh-users

I have this completion function that I have a question on:

_p4_submit () {
    _arguments \
        '(-i)-c[changelist#]:changelist #' \
        '(-c)-i[input from stddin]' \
        ':submit file:_files'
}       

I have made -i and -c mutually exclusive.  How can I make all three
mutually exclusive?  This command accepts only one of the three
possible arguments.


-- 
matt


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2000-07-13 15:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-07-13  8:57 _arguments question Sven Wischnowsky
2000-07-13 15:20 ` Matt Armstrong
2000-07-13 15:56   ` Bart Schaefer
  -- strict thread matches above, loose matches on Subject: below --
2000-07-12 17:40 Matt Armstrong

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).