From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5852 invoked from network); 10 May 2021 17:36:05 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 10 May 2021 17:36:05 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1620668165; b=QPHDTE+Zizef+WixRnmZJceH+lFEXm6DSlynfX8gJHYTh6p9Qi5NXrHcT71bsM0s6KBAAx6IQ4 TOfYpW4lWc9YI9jqgA4Qnh9eQCFp2tfZ9wNlXGUvmKlcJgEZDfR9QO9nHfOmSYlkviQtlTU1nQ MzoLBPvupQYH5TKq4cDGGdCitAOJrncKG3jvhZk/2xOQAzuKJmDAmgON1WRH+6OU3DnCOZdDXM b1shurP+cGxJfcHT4pwdzykj6kpee64nEo+IFyM1WFo9g7PsuXcqOsbnlupDuy7CxvpKhsoYN3 FP2z964C2VwTEd0XWSSi6yO8bSRQrtK4r3Gk/nB2PaxTUw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-yb1-f172.google.com) smtp.remote-ip=209.85.219.172; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1620668165; bh=UcD8ExDRzqU5FgzdGCAViEHRWEhBXEBvgP+slRvTPDc=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=JFNAsKCCEW9Kz4NyjcEKz0KyQLEtw+HPU8WpSVifGL9meraKlUCBEok6cN4n7+Q+JZFfZOKG2j y2AIEyBkpdJcSSeT7nk0S45MDHb29qxyhZ2Jy7hhBLz9QeNZa1/4YHc10wghO2CwGwiZoYkYCL MeUm22J3qFdoQPjzA4ajmxjC9K64xD4VkNNFTcqR6GWkNdoUXS5cv7VQx2uktfuNDJiYxobExZ WVoQrTMV8+jZBngmNwPK5wEil0qjJAlh4S+e06OcrYhs6wpHF6WhMGHKMJAT3cIcDEJckDJue4 7u2Wuvk9rnlSr/65DWmym7adH6d92sv0HcRORj3sw9WySw==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=OOJXfTjv48kTrawLc97j2APavPcMRvgqDOmd8A1S0Bw=; b=jNRpxSKhoT2Dc0U9kN8kyStvXT gYy8S3Sz+6aymiDHN2QwbDQHQgjVnPKWDGrkm/OoRzgICHERzhl26vtA3huPj4FDpapKMrNtgB0A0 27tyxjTuRa01QqgLfuQSv9pRZ8Kji2Sb+RpN6sC/2zViq5FBjk2zXzGCHS5Mum2hSvvU33LKm68R0 HVuVdQHOxDCiQw6pw7hTwI36YVsbF2/CJE8iZ7jEUDH/KIMNDcDktp8DfNbMvsIPX6rJ8lT9edVvL 1GP9tGvsVnl/JCWj/HjoOh37bk8e5hNuMhXs5kRgtoM/fn0plIADw06ja7+KIEl2S1iaahQKp0ETS CibK1dNw==; Received: from authenticated user by zero.zsh.org with local id 1lg9p7-00008m-MT; Mon, 10 May 2021 17:36:05 +0000 Authentication-Results: zsh.org; iprev=pass (mail-yb1-f172.google.com) smtp.remote-ip=209.85.219.172; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-yb1-f172.google.com ([209.85.219.172]:36724) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lg9kH-000PHQ-JY; Mon, 10 May 2021 17:31:05 +0000 Received: by mail-yb1-f172.google.com with SMTP id m9so22740514ybm.3 for ; Mon, 10 May 2021 10:31:05 -0700 (PDT) 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=OOJXfTjv48kTrawLc97j2APavPcMRvgqDOmd8A1S0Bw=; b=kln/soNm7UUCEKK++lbyZSY+EkSK48p3Reyk2o3CIarkEG6FKGQNjOj5lOck+aKnYl aYSVL+Fw+/PZfgU2ei8x60msyEQNYtQ3ylVjs0/IWbh7y7Z0l8jpsIa/Ix5Bp+Wj2V1V +dMEeFKUonEwxapL2sr5o7fvDp12IWpltKgw4LZtYbeNWYAU7DaVRfAcvyJge97SyjC+ z4urMn9qMn7x7NKxXsrKHBuaFHubR0HXD9vaoGP5ohsXnv6846yL7SRLox15+kU0qP+Y by/BzWy6U1tDBhqt5S7Ymez1M+OTEBCg043MWnX29Q5y+fi+ynBeNolwblRfP5k8DjdR yHrw== 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=OOJXfTjv48kTrawLc97j2APavPcMRvgqDOmd8A1S0Bw=; b=Feb9M5cbP+J047cwchlhISLvsq7lTlqb+3WlG0YaMBi57MIJAxREgPDCupR7lLMt+3 AZihp60jhTMN6YbixpPcLbCADvAfKp5FZokZU4HVSOYk+yrbdkJ/TwXE9LI72Ync9wZ0 9+Sa9bS3uGuk1RGxOIsozyj9KwMNIK45NA5iJxh9rIkwlTbPxPh8DOASVyatXhX4BbFI vldYco/UBWMbpK7KA/FakSs43JJZdSK3tUPL1sF2tgP6WNC0FvFYl7oq7I/vr8LRdb8Z 3rh0pFBL+Aebb3GHMGtuM9ne2oVDkeOt29/v5iY6ai6qIet7oWQvg0nI7q35OzovYaxk zVnA== X-Gm-Message-State: AOAM5322XeGlvpXUSEWa2nKLCjJ4yKt+5B/rDRuHgYfqDZJXdcYQMmCT PbqmPjUxbaNsgblDqX5lUEjcxY2GF01aN8Z5mDUCHcUMYBR1cg== X-Google-Smtp-Source: ABdhPJwyGqNTgDL42Onsx7gM6hCKxrVGetbRGrX6ypTh3dL+GsdNz8omg9U8kYKvkCBegmDtpLK7YQ6uLDqIfw5QuZU= X-Received: by 2002:a25:6009:: with SMTP id u9mr33543639ybb.316.1620667864353; Mon, 10 May 2021 10:31:04 -0700 (PDT) MIME-Version: 1.0 From: Philippe Proulx Date: Mon, 10 May 2021 13:30:38 -0400 Message-ID: Subject: How to complete with _arguments() depending on an option and within a loop To: zsh-users@zsh.org Content-Type: text/plain; charset="UTF-8" X-Seq: 26723 Archived-At: X-Loop: zsh-users@zsh.org Errors-To: zsh-users-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-users-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: I'm in the process of writing a Zsh completion script. Consider this command line: $ prog --state=foo --meow --state=bar cola --mix --lol=34 \ --state=foo --meow --zoom In a Zsh completion script, how would you complete the options above, knowing that: * You can specify one or more _groups_. * A group starts with the `--state` option which accepts an argument. * The accepted options depend on the argument of the preceding `--state` option. For example: * With `--state=foo`, you can pass `--meow` (only once) and `--zoom` (only once). * With `--state=bar`: * You can pass `--mix` (only once), `--lol` (only once). * You must pass a non-option argument (`cola` in this example). * Wherever you are, Zsh must always offer you the `--state` option with the `foo` and `bar` arguments (to restart). I managed to implement such a completion script "manually", with the `words` and `CURRENT` variables, compset(), and _describe() to add completions. It works, but I feel like I'm rewriting parts of _arguments(). Is there a known way to achieve this mostly with _arguments()? Thank you, Phil