zsh-users
 help / color / mirror / code / Atom feed
From: Roman Neuhauser <neuhauser@sigpipe.cz>
To: zsh users <zsh-users@sunsite.dk>
Subject: Re: _arguments: repeated option with multiple optargs
Date: Tue, 19 Sep 2006 13:19:17 +0000	[thread overview]
Message-ID: <20060919131917.GA40239@dagan.sigpipe.cz> (raw)
In-Reply-To: <20060919014639.GB29030@dagan.sigpipe.cz>

# 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 <CURSOR>" 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


  reply	other threads:[~2006-09-19 11:19 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-19  1:46 Roman Neuhauser
2006-09-19 13:19 ` Roman Neuhauser [this message]
     [not found] ` <20060919172825.3f7c6232.pws@csr.com>
     [not found]   ` <20060919225628.GA46070@dagan.sigpipe.cz>
2006-09-20  9:10     ` Peter Stephenson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060919131917.GA40239@dagan.sigpipe.cz \
    --to=neuhauser@sigpipe.cz \
    --cc=zsh-users@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).