From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26065 invoked from network); 19 Sep 2006 11:19:09 -0000 X-Spam-Checker-Version: SpamAssassin 3.1.5 (2006-08-29) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,FORGED_RCVD_HELO autolearn=ham version=3.1.5 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 19 Sep 2006 11:19:09 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 37550 invoked from network); 19 Sep 2006 11:19:03 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 19 Sep 2006 11:19:03 -0000 Received: (qmail 8722 invoked by alias); 19 Sep 2006 11:18:50 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 10742 Received: (qmail 8712 invoked from network); 19 Sep 2006 11:18:49 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 19 Sep 2006 11:18:49 -0000 Received: (qmail 35755 invoked from network); 19 Sep 2006 11:18:49 -0000 Received: from fw.sigpipe.cz (HELO isis.sigpipe.cz) (62.245.70.224) by a.mx.sunsite.dk with SMTP; 19 Sep 2006 11:18:46 -0000 Received: from dagan.sigpipe.cz (dagan.sigpipe.cz [10.9.8.90]) by isis.sigpipe.cz (Postfix) with ESMTP id 01E841F87BF2 for ; Tue, 19 Sep 2006 13:18:46 +0200 (CEST) Received: by dagan.sigpipe.cz (Postfix, from userid 1001) id 0B0802C92AF; Tue, 19 Sep 2006 13:19:17 +0000 (UTC) Date: Tue, 19 Sep 2006 13:19:17 +0000 From: Roman Neuhauser To: zsh users Subject: Re: _arguments: repeated option with multiple optargs Message-ID: <20060919131917.GA40239@dagan.sigpipe.cz> Mail-Followup-To: zsh users References: <20060919014639.GB29030@dagan.sigpipe.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20060919014639.GB29030@dagan.sigpipe.cz> User-Agent: Mutt/1.5.11 # neuhauser@sigpipe.cz / 2006-09-19 01:46:39 +0000: > Hello, > > _arguments -s : '*-r=::->file:*:::->test' > > does exactly what the manual say it does, IOW all the remaining words on > the line are to be completed as described by the action. That's not what > I want, though: the whole (-r file 1*test) can be repeated, and I'd like > it to offer also -r. > > Can _arguments do this for me somehow, or is this up to me? Thought I might be more specific. I have the following command (ABNF with implied whitespace at obvious places): cmdline = "tence" ["-h"] *("-i" dirlist) 1*("-r" file 1*(test)) and this completion function: ------------------------- #compdef tence local context line state typeset -A opt_args _arguments -s : \ {-h,--help} \ '*'{-i,--include-path}'=:include_path:->incpath' \ '*'{-r,--run}'=:file:->testfile:*::class:->testclass' case $state in incpath) _dir_list && return 0 ;; testfile) _files -g '*(.)' && return 0 ;; testclass) # offer tests defined by this file for completion local -a tests tests=($(_call_program tests tence -C $words[1])) compadd "$@" -a tests && return 0 ;; esac return 1 ------------------------- with "mycmd -r F a b c " on the command line, completion should offer not only further tests (d e f), but "-r" as well. I don't want to pollute the interface with dummy arguments to halt the class optarg processing on, and also would love to defer as much as possible work to the standard functions. _arguments is already there, I don't want to write another parser. -- How many Vietnam vets does it take to screw in a light bulb? You don't know, man. You don't KNOW. Cause you weren't THERE. http://bash.org/?255991