From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: * X-Spam-Status: No, score=1.4 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE,SPOOFED_FREEMAIL autolearn=no autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id ad48115e for ; Tue, 24 Sep 2019 05:52:51 +0000 (UTC) Received: (qmail 28235 invoked by alias); 24 Sep 2019 05:52:41 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 24282 Received: (qmail 9875 invoked by uid 1010); 24 Sep 2019 05:52:41 -0000 X-Qmail-Scanner-Diagnostics: from mail-vs1-f46.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25580. spamassassin: 3.4.2. Clear:RC:0(209.85.217.46):SA:0(-1.7/5.0):. Processed in 1.478487 secs); 24 Sep 2019 05:52:41 -0000 X-Envelope-From: zshuser1010@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.217.46 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=RXplDloXngv+ct2D4E2sqV0D2rU41uSkzsfwX453iq0=; b=Jvcn/tmI8t0x2zRSCuxHZHCKSmw7aODfuAaiuXpUInekG8guNPYUIpDfh91M+Q9nX4 EqtPchOc/a7L89tvb64GLfQrfG54+TlxuHpvYzPHbuMirvjFSAMmikoai8LWyz3V/mdX hIJjCxbM4IiNdZHN7UTXc9xOo8KmAIMs1DPCUqJktKzdrdkjnWW/ukNMo7vHdyhMxKDW 55MnvKmZeb0AHVq8sc1sfleZfqT7s5F85G4bSRqL5RxjvnwaRGwHU5JA/IHDIHdQlb4n A83U3LLG/mCWSCrmad6dTk2SeT6swooHw9lwV4cSLNTo8CFAenEAvb5AZtVPGibQR+jl hPvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=RXplDloXngv+ct2D4E2sqV0D2rU41uSkzsfwX453iq0=; b=IgXKd2JdV+/Xp9F8V5suLuRyh1EilueXyBP0lZMev6Gj+B6CMqqkfHhR+TbuxiGY5M zck+h14DyGnko/7ipaDGVFZa4IdAFNm6UmElB6pCIBfTlxk8FiwOg2IYE3QPDc5lcc1V eDJaeM2aNPY3NTrDSrQPi9rMWBDf1QPom0U+elfpWi75Zxl6G3nxsg17o6zEZU/DuGh+ 1PmP07b9vpiQt0i5eZ+PSW2XPZd7YYDVKCSq64SxqcKa46EI4sP6tIAeSx3LfMpRuue1 oNk0igOgmSkokyG2hFWDEEbgtCDBCryeCQQm9ZD3CfO3m5mQScoDp7yMbLs9bS/HCm+/ Md6w== X-Gm-Message-State: APjAAAXcf6imdgTdJAZlrO5o3VTN+xPQd44QkXnG3fjfNLHbZI0VmGV5 KUHFQ4TOM6/NbFDPCsgHAgmM6daZyBzx/Iw1hQp/M/IdXw== X-Google-Smtp-Source: APXvYqx9ZyKTKfAyeHq3PdHhJPzuiBagi9PsXmL8DuCd5RnmnMeMehpNlE0YkhN9Kl4kgKXasmR9y0NUGFvz2qs7Efw= X-Received: by 2002:a67:db09:: with SMTP id z9mr566303vsj.134.1569304327633; Mon, 23 Sep 2019 22:52:07 -0700 (PDT) MIME-Version: 1.0 From: zsh hh Date: Tue, 24 Sep 2019 05:51:56 +0000 Message-ID: Subject: how to debug completion or: how to change _arguments depending on subcommand (not fixed position) To: zsh-users@zsh.org Content-Type: multipart/alternative; boundary="000000000000fe41320593462272" --000000000000fe41320593462272 Content-Type: text/plain; charset="UTF-8" I want to create a completion script for: > program [OPTS] SUBCOMMAND [SUBCOMMAND-OPTS] [ARGS] A common approach is: _arguments -C \ '1: :cmds' \ '*::arg:->args' \ && ret=0 case $state in (args) case $line[1] in (subcmd1|subcmd2) _message 'no more arguments' && ret=0 ;; (subwithextraopts) _arguments ... && ret=0 ;; (othersubwithextraopts) _arguments ... && ret=0 ;; esac esac But that relies on subcommand being at $line[1] which is rarely the case (at least in my application) git is actually a good example: git -TAB #tabs git options git add -TAB #tabs git-add options git --bare log -TAB #tabs git-log options (but log is not $line[1] That leads to the idea using git completion as reference, which in turn leads to the question: how to debug such a completion? It is a very extensive... --000000000000fe41320593462272--