From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2914 invoked from network); 13 Jul 2000 15:20:46 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 13 Jul 2000 15:20:46 -0000 Received: (qmail 21829 invoked by alias); 13 Jul 2000 15:20:22 -0000 Mailing-List: contact zsh-users-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 3279 Received: (qmail 21821 invoked from network); 13 Jul 2000 15:20:21 -0000 Date: Thu, 13 Jul 2000 08:20:03 -0700 To: Sven Wischnowsky Cc: zsh-users@sunsite.auc.dk Subject: Re: _arguments question Message-ID: <20000713082003.A9067@corp.phone.com> References: <200007130857.KAA25581@beta.informatik.hu-berlin.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2i In-Reply-To: <200007130857.KAA25581@beta.informatik.hu-berlin.de>; from wischnow@informatik.hu-berlin.de on Thu, Jul 13, 2000 at 10:57:20AM +0200 From: Matt Armstrong 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