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

Re: _arguments question

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.


Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx

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