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, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 2435 invoked from network); 8 May 2021 18:37:26 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 8 May 2021 18:37:26 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1620499046; b=RY+HDgNyqczxC+Lwbqy65FAafXUTgNIy+sNnZ3EUIdwFPImCjzPWpaGjJS5/KO3pUfohq0YFLN seN520ULpltuBMen+DJ4p0m8XDRNqRIcnjzC5OXdj/4Q6R/X0vc4WAC5gefmTzeqexCtiQfqnb H76tDmbUsDoi+pgeMf7sr25Jo9fhrflloEsRAN7fT4aqj/UgEy4MqhpkcVH/3b3VdWOx2alVNU 13Cg3/oIfLS2t6GXmqkppg6jajp0FrK9tKRFNVsca1smwHh41oh4Kl3NIDRaacS0ROWnPiaDZB kRiOWZix8g2egsvI78CcqtOx0MCnYsuO5KI7tJkyFnZv+A==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ot1-f51.google.com) smtp.remote-ip=209.85.210.51; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1620499046; bh=kUPO3Hn0ErIv1dueYORQdvaX5RwiEFuOrTkXOjYTb74=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=N4uG0t5ZiiYxxFhDMhQzJesT6pfY26xqg/J3F68r4ESqvWcGjD6Rp/Xr+j3N8aNLU/nZ5V4HSR slKXP3SYGeIYsH87TM7ZKLPMEPtAEohXDI0xfIq7+udQJOoZWxsxzO6kstcES+fw8CZ6Wj7Xis NjGuWEow7zdRTcLPnzZBZN2jIe/2O4aRDT6csN2by61EoSDWeTfw9MyPFSjhlKc1cWSg7owVIX XSt/kS+TWPMcZX5mxHCCUTXEKQxlcE/b5DwiKdZZYekXe+0BeZIuIMtIVA9SZcH/R+LuGe+rnL Qzl8pmFwJvS/Z6PdW3zUawNBQ1Dylp2n8xwQHs22siG8BQ==; 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:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=q73RYh6ACJcwZ6MR2vgUgke9dmSwEMBiSCexkAKp5aI=; b=rq4TrdR1PxKgR7d6JXvikGmtqs zwRUoNORXMIyHQr5sFODq9rlPO4yN03+h3zGMkfy8edaLLuoPMV9sVdOScwstqwQHznu226KsufWs j0XMPhRLGvUjlw+H/5Cc8RXWyfouTSdFTWorTz0roIK31DVUTdWIbqRStkOdZughI3Z58egRDIaYJ hkdxYlVeGmEJwDAHQ8I1jtAsaMRVwPobqYW79CHhy2f81zlLSofAnUXutZzR1Ae8jC577xnJ9mo6s EIXJMSfyfi5dH2yEI/x5W9A0jxWcPlxz7ZXuSXnvRnadxvjGgTDlT0nvnUKrjWm1Rra1P1BFZS7sf hH7xdC1Q==; Received: from authenticated user by zero.zsh.org with local id 1lfASl-000EHZ-SA; Sat, 08 May 2021 00:04:55 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ot1-f51.google.com) smtp.remote-ip=209.85.210.51; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ot1-f51.google.com ([209.85.210.51]:42997) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lfASB-000E0e-Ax; Sat, 08 May 2021 00:04:19 +0000 Received: by mail-ot1-f51.google.com with SMTP id g15-20020a9d128f0000b02902a7d7a7bb6eso9364574otg.9 for ; Fri, 07 May 2021 17:04:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=q73RYh6ACJcwZ6MR2vgUgke9dmSwEMBiSCexkAKp5aI=; b=uWsWkcJxmZa+1eIrAQvCrctQrQtyzzz58ySSK6GMGB9XqeBiBWZsEw97SYvW/hIR2O Qy0tncmf92tNRKeCaWAurINhysziCbniqypRN6OFJJrojVcLFFSaqJScOudURAibkde2 sWHAoY/KOPq9CTlHVTvQAWsfrXIRA4FYFRYvP/GPx5Sdgy8XjRXp+0yqkpgT4IoULQz9 8XRYP84T4nSQngRhj676H2jqCl+TDsw92z7dRAqSs2048dOk0rf4x/9KViCzbUtPPQ0z xwY16xtKVFMterZsZUJ6a9hUCrSgx2k/CIs1GVj9sx+r7NCqEmrHGDUjUvTNNGSKvwQz YPNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=q73RYh6ACJcwZ6MR2vgUgke9dmSwEMBiSCexkAKp5aI=; b=tWY9R0mqVAKe05URxu+Ndxy2FL6GxwntiyoH2KFu+E6e7xoo6YgRtPaLx03R9bPs81 JUgzdNgavZR8Ujh5F6fKgq/2Og6WO3RTk+ywtqVJYjkimdZ4OCJKhfJmtEeN5C8v4Ixb Fc5ahhL0vHX1y+b8pw3o+C2ig8TlhYoLZBA5EagfZKFhwp/yj6rC9UkKyvKGlQ0aCCKk KDgtEeAOHpP98rp/AL2LZcfSGAmlZ+enfpt4GQf1/VDjW3xr/Ve0EHrqv5GRsn8VXnA+ o6zKiHYUxQoSfCZPNcknddJkRRgV+STLDM9ghcYbW3Hq8WtLqeeduuUyw3q4+HozVaiO DD2w== X-Gm-Message-State: AOAM531ZrtUpXKz4gZ4u9S4twwjB10w0OktOXxBLS1PtZuWHO7A7DLtY J4ySvwtcyNalBgcw3yvVIbBU8tkFyVQrMvy5DWuVhA== X-Google-Smtp-Source: ABdhPJwgZFQVl321cE+JZi3ZPqj8bAMR3rEc5KfrVafXiWG/g1WO+bnQNBpVzXdWdg14F/hiS1A2eaQV8+FUpKUZ6bk= X-Received: by 2002:a9d:f66:: with SMTP id 93mr10421173ott.229.1620432257842; Fri, 07 May 2021 17:04:17 -0700 (PDT) MIME-Version: 1.0 References: <1857440792.3267285.1611587238431@mail2.virginmedia.com> In-Reply-To: From: Bart Schaefer Date: Fri, 7 May 2021 17:04:06 -0700 Message-ID: Subject: Re: [BUG] COMPLETE_IN_WORD fails to recognize brace_parameter context To: Marlon Richert Cc: Peter Stephenson , Zsh hackers list Content-Type: multipart/mixed; boundary="0000000000001cadfb05c1c64926" X-Seq: 48790 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: --0000000000001cadfb05c1c64926 Content-Type: text/plain; charset="UTF-8" On Fri, May 7, 2021 at 7:09 AM Marlon Richert wrote: > > This bug is similar to the one I reported in workers/47858. Only superficially. > This works correctly: > > % setopt completeinword > % tst() { print "\n$compstate[context]"; zle -I } I think there's something missing here for the test case. A style or a bindkey? Something to run "tst"? > % # place cursor after '${(' and press Tab: > % : ${()foo} This is actually a failure in the interpretation of the cursor position within the C code. An existing comment says: * We are still within the parameter flags. There's no * point trying to do anything clever here with * parameter names. Instead, just report that we are in * a brace parameter but let the completion function * decide what to do about it. The issue was that "still within the flags" assumed complete_in_word was not set. An earlier test had a similar mistake when the closing brace of the entire parameter expression was already present. Patch below attempts to fix those assumptions, but still leaves further effort up to the completion function ... which currently completes nothing when the parens are empty. I'm leaving that for someone else to work on. I also expanded on an existing comment. --0000000000001cadfb05c1c64926 Content-Type: text/plain; charset="US-ASCII"; name="check_param.txt" Content-Disposition: attachment; filename="check_param.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_koezi2rb0 ZGlmZiAtLWdpdCBhL1NyYy9abGUvY29tcGNvcmUuYyBiL1NyYy9abGUvY29tcGNvcmUuYwppbmRl eCA1MTYyZDk3ZGMuLjEzMWU4NjgyNSAxMDA2NDQKLS0tIGEvU3JjL1psZS9jb21wY29yZS5jCisr KyBiL1NyYy9abGUvY29tcGNvcmUuYwpAQCAtMTEyNSw2ICsxMTI1LDE4IEBAIGNoZWNrX3BhcmFt KGNoYXIgKnMsIGludCBzZXQsIGludCB0ZXN0KQogICAgICAqCiAgICAgICogVE9ETzogcGFzc2lu ZyBzIGFzIGEgcGFyYW1ldGVyIHdoaWxlIHdlIGdldCBzb21lIG15c3RlcmlvdXMKICAgICAgKiBv ZmZzZXQgIm9mZnMiIGludG8gaXQgdmlhIGEgZ2xvYmFsIHN1Y2tzIGJhZGx5LgorICAgICAqCisg ICAgICogRnJvbSAuLi9sZXguYyB3ZSBrbm93OgorICAgICAqIHdiIGlzIHRoZSBiZWdpbm5pbmcg cG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgd29yZCBpbiB0aGUgbGluZQorICAgICAqIHdlIGlzIHRo ZSBwb3NpdGlvbiBvZiB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHdvcmQgaW4gdGhlIGxpbmUKKyAg ICAgKiBGcm9tIHpsZV90cmlja3kuYyB3ZSBrbm93OgorICAgICAqIG9mZnMgaXMgcG9zaXRpb24g d2l0aGluIHRoZSB3b3JkIHdoZXJlIHdlIGFyZSBjb21wbGV0aW5nCisgICAgICoKKyAgICAgKiBT byB3YiArIG9mZnMgaXMgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGlmIENPTVBMRVRFX0lO X1dPUkQKKyAgICAgKiBpcyBzZXQsIG90aGVyd2lzZSBpdCBpcyB0aGUgZW5kIG9mIHRoZSB3b3Jk IChzYW1lIGFzIHdlKS4KKyAgICAgKiAKKyAgICAgKiBOb3RlIGJlbG93IHdlIGFyZSB0aHVzIHN0 ZXBwaW5nIGJhY2t3YXJkIGZyb20gb3VyIGNvbXBsZXRpb24KKyAgICAgKiBwb3NpdGlvbiB0byBm aW5kIGEgJyQnIGluIHRoZSBjdXJyZW50IHdvcmQgKGlmIGFueSkuCiAgICAgICovIAogICAgIGZv ciAocCA9IHMgKyBvZmZzOyA7IHAtLSkgewogCWlmICgqcCA9PSBTdHJpbmcgfHwgKnAgPT0gUXN0 cmluZykgewpAQCAtMTE3MSwxMyArMTE4MywxMyBAQCBjaGVja19wYXJhbShjaGFyICpzLCBpbnQg c2V0LCBpbnQgdGVzdCkKIAkgICAgY2hhciAqdGIgPSBiOwogCiAJICAgIC8qIElmIHRoaXMgaXMg YSAkey4uLn0sIHNlZSBpZiB3ZSBhcmUgYmVmb3JlIHRoZSAnfScuICovCi0JICAgIGlmICghc2tp cHBhcmVucyhJbmJyYWNlLCBPdXRicmFjZSwgJnRiKSkKKwkgICAgaWYgKCFza2lwcGFyZW5zKElu YnJhY2UsIE91dGJyYWNlLCAmdGIpICYmIHRiIC0gcyA8PSBvZmZzKQogCQlyZXR1cm4gTlVMTDsK IAogCSAgICAvKiBJZ25vcmUgdGhlIHBvc3NpYmxlICguLi4pIGZsYWdzLiAqLwotCSAgICBiKyss IGJyKys7Ci0JICAgIGlmICgocXN0cmluZyA/IHNraXBwYXJlbnMoJygnLCAnKScsICZiKSA6Ci0J CSBza2lwcGFyZW5zKElucGFyLCBPdXRwYXIsICZiKSkgPiAwKSB7CisJICAgIHRiID0gKytiLCBi cisrOworCSAgICBpZiAoKHFzdHJpbmcgPyBza2lwcGFyZW5zKCcoJywgJyknLCAmdGIpIDoKKwkJ IHNraXBwYXJlbnMoSW5wYXIsIE91dHBhciwgJnRiKSkgPiAwIHx8IHRiIC0gcyA+PSBvZmZzKSB7 CiAJCS8qCiAJCSAqIFdlIGFyZSBzdGlsbCB3aXRoaW4gdGhlIHBhcmFtZXRlciBmbGFncy4gIFRo ZXJlJ3Mgbm8KIAkJICogcG9pbnQgdHJ5aW5nIHRvIGRvIGFueXRoaW5nIGNsZXZlciBoZXJlIHdp dGgKQEAgLTExODgsNiArMTIwMCwxNCBAQCBjaGVja19wYXJhbShjaGFyICpzLCBpbnQgc2V0LCBp bnQgdGVzdCkKIAkJaXNwYXIgPSAyOwogCQlyZXR1cm4gTlVMTDsKIAkgICAgfQorCSAgICBpZiAo KHFzdHJpbmcgPyAnKCcgOiBJbnBhcikgPT0gKmIpIHsKKwkJLyoKKwkJICogV2UgYXJlIGluc2lk ZSB0aGUgYnJhY2VzIGJ1dCBvbiB0aGUgb3BlbmluZyBwYXJlbi4KKwkJICogVGhlcmUgaXMgbm90 aGluZyB1c2VmdWwgdG8gY29tcGxldGUgaGVyZT8KKwkJICovCisJCXJldHVybiBOVUxMOworCSAg ICB9IGVsc2UKKwkJYiA9IHRiOwkvKiBTa2lwIG92ZXIgdGhlIGZsYWdzICovCiAKIAkgICAgZm9y ICh0YiA9IHAgLSAxOyB0YiA+IHMgJiYgKnRiICE9IE91dGJyYWNlICYmICp0YiAhPSBJbmJyYWNl OyB0Yi0tKTsKIAkgICAgaWYgKHRiID4gcyAmJiAqdGIgPT0gSW5icmFjZSAmJiAodGJbLTFdID09 IFN0cmluZyB8fCAqdGIgPT0gUXN0cmluZykpCg== --0000000000001cadfb05c1c64926--