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.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 706 invoked from network); 20 Sep 2021 19:10:09 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 20 Sep 2021 19:10:09 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1632165009; b=GXdk3F1IZX3RLg7dFH+VY4IlZAu/Tq0H4ySorOWY6d+mUKedWM6rpG0tXwkkVmfbB+UzWIbE7Q AXfsOVJtFbZwEPdpL5w8HIwgtiWp7y4v3cnMzNAkCIE2kLxvgOnLLe3JmdgvvuM/+c/W3F+8/q buXxH0TLhIxV8REFY8TRk9NZl8qJrUiaoLFmMX7d95fFWvPBHz2BL4cpEtMIAs+d82NS8ywkYP BXlvfBZgxlV3lk6D/OnAjxlW0N9P30FHacWsJzGiqGwWVOw5Q1S0EJnRnU6Ld5Em1U/ke3XcO8 g8gJ6ubBOPIbHEBo1aixUY29lEpmQu1qqnvv4f91nomzZw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mout.gmx.net) smtp.remote-ip=212.227.17.20; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.a=rsa-sha256; dmarc=none header.from=gmx.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1632165009; bh=ToNJnuSXqR/o+SKpzIWRel1wBF2NxXTK+uWPiQN/CZA=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:Content-Type:Subject:From:To: MIME-Version:Date:Message-ID:DKIM-Signature:DKIM-Signature; b=d9dJSboBY3kL4o+c5fhQlBCc/yXsk0DdRPDuLbAc2mQEKna7ZhxgozxPqn3EMY7RH7l1BhdmAc gmdiceZ/BVZhlrirvVmgwN7n+WY31mYMwC/ZVKmQVLypX7jrMpzFVndvR4IIGqJb5T9cb6F1KZ f/DVmDtXx4eziKhlSRCKFhfN07CXvH8kitEz6f9yYZQnrnSx3a5sG78IMSKKFd0dSfml3nbncj De0YJ/70aP6YIFEDirr3A5pBkCEn2/rtBGbidgmG6hQoLUAaOlhrSSNXQI1Py2riR+9QJD/WAd pEk+9XyehBA0DFhn43LjawGAiA6IZIhc/SLp65PBbjz2AQ==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Transfer-Encoding: Content-Type:Subject:From:To:MIME-Version:Date:Message-ID:Reply-To:Cc: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References; bh=qbZQGuGZ44rMPfhB3AWzSbzl0PzXz6UiISZnJEgYCUg=; b=b4dOJmqI28Wp70fYT7ZVXLVT+a j5DPDlapwfdFYy9KsjTh9xHaKbmrETZKXx12M1AsAfuWiGw68BHAS0piLuzvqtxPh833jlCCgclI1 Gxnj8zVAo7UP7AD0Zem8EM5YUXoFmFatmwwrGxpo5GA06khMwmJrYhWG1txrLlQ3Uc/tUsPtnzGsn opllbsvJHBnTPTWECbrKaMGBRKs8mD2JuVLQDitmupZLqTvNakcoSto+T23jvFheIqwVqEcX3xKDP F9+SEvGpZvqqvia+EZf9JZxgtG/8L2EvO+WsDUgzfQNBLb19EbCOCuXdmMalLKqZLqEzAWzzV5/JW qKWjo9OA==; Received: from authenticated user by zero.zsh.org with local id 1mSOg3-000Kl2-Nq; Mon, 20 Sep 2021 19:10:07 +0000 Authentication-Results: zsh.org; iprev=pass (mout.gmx.net) smtp.remote-ip=212.227.17.20; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.a=rsa-sha256; dmarc=none header.from=gmx.com; arc=none Received: from mout.gmx.net ([212.227.17.20]:33383) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_256_GCM_SHA384:256) id 1mSOfC-000K1g-9S; Mon, 20 Sep 2021 19:09:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1632164953; bh=ToNJnuSXqR/o+SKpzIWRel1wBF2NxXTK+uWPiQN/CZA=; h=X-UI-Sender-Class:Date:To:From:Subject; b=kqPXoi89/QxTsDkdE94/8Fp1wRh8h9qSIyLu52cMAH5Ho1pPCVf9zhdQMDUOgGWHy 2uqXtcLn5wA333QyhrP9HGKtLhvQ//2eO8DFEo78HbztWGoberOjXTmCCLBPNL/pfA GKdAjlbQhVzSzFr7jkmGRKyywOzkRO5sunuoGWB4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [10.0.0.14] ([71.227.85.179]) by mail.gmx.net (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1M3lcJ-1mTE0g01jP-000u9h for ; Mon, 20 Sep 2021 21:09:13 +0200 Message-ID: Date: Mon, 20 Sep 2021 15:09:11 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 To: zsh-users@zsh.org Content-Language: en-US From: Eric Cook Subject: When to (and not to) use _arguments -C with states Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:PZ48FrSdIkhjFcByu3br87k4ixSLdWT3fWytRA1OXPRVeogWON0 8rwSJeccP2i4e0dWGIek+N99Wa2kU4onl6ov32/3eOzJQEX2K3RKqd2yJ8neNGl9SiPEeSa cPU4utCGvCB9nrVF6xicuuDGarfwtXpJCjdDl5w69wy0qModakOK3KUimHRdsDHRKkYqI7a ZUMHBkttAijPQAQ3ep9qg== X-UI-Out-Filterresults: notjunk:1;V03:K0:v1U4pu/3j6c=:0vkdaoofD/6ugWBsMLD7BD H+JJqgw4ce6wvP/LZdgFvW4LfIep/z93zEZlJ8LPL1CAjA1rTBG8ED7MnW2ju7OGrwj00JAKF sMbnfgVSUxVUStln0MhH6S6gNB7GoxmQHMRD9gIna4G8FWDL3OFL946csn44fDe1FD6yatE4+ bb8PoycabH1fpNLMhuqY5Poj8PCvLWrfag0lNo/AmqvNoUf3uoppgulgcCN3Q1PfhiU/wqYuX oBNhxSfVX9Ar2G7Wpf70LjycaxlcvzKiSBZzHjvMCzKE8oscejp9gj/zbj0QnvLirjrZZ93C1 0eikbv9EkyhRR0m/piktMdIogomjmZRqoNGFI174vVWIoq3OIeyxuIQ9xNAHTerI0oftORJn+ SkXNMrSQNpDesDsjEaF7LWeYSv6XQDyHCBgrLh7BQaZCuLtmnuST7k1MZcFWZWykrBRapTwRn /W6BrNtvcEJ8x+o5u9VYC2wUJnhilCOC1BteWOu/Q2GWaRSlw0petxQZVoOMThRIz5c60dXZk AHuD+ON07XMlSzAvMaS8TE0tf9GfpCGqo2jNe0amREPk/U2groeE5Qlt+b9geLurJOzk0Jlbv iJgSrL7VoB8sdOJrkWJ7QCIQ402wX09vyl8p2s1vlAQQ7ry0PiFZx2GgXRJeUliqltsSOG41S VNZtaBZdlqT7PBCm9mdqGFrr0JV97hs6TeFzxhoHC/IcdMTo3KL/x0jIbT48ni8yiTPcT8BPH UGp3yPNieqeLpEB8io8ZcVg8Ey/y1hVaeMWunqCjaeDMjaXPrFPomjQWOZOyU7bx+TEBBdVPN PfJpKqBJppHu/yuIMCBNALvzCwUTImkiGNr0CU7d9lAGTcXoAMHtqTGFcr64RnJN34SWQTL3z osn5zDQSeJ73yGLRl5Mce9ziKg6mb6RKnU8UDFGql1V+ShcnF00hLB67fDH4NJnk+BKXnHd5X jotCAQI8qFDeA7/b3TgAgoj2QPAUqNu1NFqS6gMnOlsfl8nF0LLWhdjP5oB1IXTquzyFDjQWD eZGXKbT/zPAsS8P1nsEXgm9D/26JkMdiCfAI/xiWkMus5cg+/GrQSGtaigBeTxhflg== X-Seq: 27126 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 think that i mostly already figured it out but this piece of zshcompsys(1) always confused me. Where _arguments encounters action in the `->string' format, it will strip all leading and trailing whitespace from string and set the array state to the set of all strings for which an action is to be performed. The elements of the array state_descr are assigned the corresponding message field from each optarg containing such an action. In the majority of completers that i have written that used ->string actions, only one action was `action`able at a given time. meaning $state is only a single element, with code that assumes as much like: case $state in ... Which made me question when is multiple ->string actions possible? An contrived example being: _foo() { local s expl state state_descr line local -A opt_args _arguments '1: :->foo' '-a[optional argument]:: :->bar' && return for s in $state; do case $s in foo) _wanted digit-tag expl 123s compadd 1 2 3;; bar) _wanted alpha-tag expl abcs compadd a b c; esac done } compdef _foo foo # foo -a since -a uses ->string but it's argument is optional, the '1: :->foo' spec is also valid so foo and bar are correctly in $state at once. Are there other ways in which $state can contain > 1 elements? I ask because i would like to know when it is safe to use _argument -C