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=-1.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 29669 invoked from network); 6 Sep 2020 03:05:39 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 6 Sep 2020 03:05:39 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1599361539; b=Zjykxm+pxgs9fVyA9F/sydyZwjzoz9Wwj/qwo4QFWPyewdIoXaK1Nc+ktaeE6317wjDfph1fbt HVFwoP9Jlj+7uwb+c/GlX5NZxxqBVgXreFPiBe6TCNZaRrMUYwHhi6LYFvmJHe+HZLsYVSr/xW Mb3nXWYWKvThc6c5SIV1/Dbg0dq5CHGgQzw0OqDjBIqgHLW61DDJF1ZM+xN8wusNeMB86y0x3m 1q9MUyk1Unfyrl0aeN48ueVB/KOlHwvmoodmcX4nOKXrRVVd9EYdOCRpb8S63vWuM9PRQOPIAm v+/xyB6FwwuAC34kr/tpS7WsPSpPp+Yqj1PP4jf7i3gsvw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ot1-f50.google.com) smtp.remote-ip=209.85.210.50; 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=1599361539; bh=FRqOhPzGT9g9p3ApNc0AKgGDNmpDbSbeQqT5FaBNfVI=; 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=LlPBYmskfeKMFKZO+6htz6Qc7tbFEkT3tX1Ooh1bCH+dGUOPI+tvEvqE+sIJGD7Y/4stP3f7KE bIYPe+q3VwJ7gvw7gbO5XgKpa0kObrG1IuXg7Q7qdM8CkhvKb7K6KiOw2g6+dFRx/KcTPYPeC2 RZ/9I7QyXNBsDQ5QhUkstTMSFXDI1av8cPF7dmOYGqkErulUf9Xh2SZji+Dc9KUrIwaHJoXSKs MqEJFDvJiOlHfVcEsfl9P+vIVX1GweZxcxUzNmECuu+son3GrjLRipEAGlMOfvAzItiv05tqSl ptZTRPtnippap5otXRQiSDAttxaqquT+ZDpuNBXlAZUHpQ==; 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=iy11KE4cCdYfgFtMyGKvcDm9rJ4JNhocs7G/y/T9gbg=; b=ZYUfMOFgdR/6O7ABMyHxtg1VH6 oSPLihNZYFkmo/7oy5wpVux2hvzA1Cp8j9AfnYEdlrPfXFoQklpq1b3CAgaukHlcPO3yPK3+EpF3v HexZRGKpX599vZdHtmBsjwov79mMjcrUmitVduoZfYZiEso4XSskExvtBe2v0lDGe4jpobEgWQpeI J+f/r+B90HDz3aXiJ1AbxwwU8j4p5q1ZMOFhJu4RWiX8KcD44LG2CMTNTPT4x6iZA4CfecY9clzxP Ia6a1xyw8i9PmlWbsZcuD2bC9islayX0qhAcP7yI+tUK0AfV5wHi+SP0bI6r3uz4ZpOx8cSvSewbV 8xdA68mA==; Received: from authenticated user by zero.zsh.org with local id 1kEkzp-000IfL-8m; Sun, 06 Sep 2020 03:05:37 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ot1-f50.google.com) smtp.remote-ip=209.85.210.50; 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-f50.google.com ([209.85.210.50]:40354) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1kEkzV-000HlP-FB; Sun, 06 Sep 2020 03:05:18 +0000 Received: by mail-ot1-f50.google.com with SMTP id e23so9484973otk.7 for ; Sat, 05 Sep 2020 20:05:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=iy11KE4cCdYfgFtMyGKvcDm9rJ4JNhocs7G/y/T9gbg=; b=nMj1QuwBbNfXEfnX3UNo5YSR9ffilvidceTfKCO7HQAvAmqFPF+qNGX4qR98oVefN6 DfGHS8QqkplLFw1VIcMYRqIyipJ1EgD4rs06pSWo2HIcDTzFgMsppi/xK8Zrm6ppM3ZM zYwQRKMNR/lXtBnZwxzlzJ+cXrC0GCjfd+pLMVBqAALlJRcTp6P7CaQqugf2gHZmlQ2i +paTi3zvnfqm9we+FgR+ZWS0wxGkGSVUoR0z7sgQ3glr5b1AoArV+M/++kP4n1l09t5T L0l9yOq050Z0bMGOYsniTHHa7ENLhA8SRknhRDlOdxlJ7m084l+UqQ8W38Arc9/Ob2YX IiOg== 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=iy11KE4cCdYfgFtMyGKvcDm9rJ4JNhocs7G/y/T9gbg=; b=ZKYc82loXC/tXOU1/T0oyk+CeEX59Z2SWI6O7twutCKT5vaEm31Au00KEaTsK2tVY4 XyzYjNGapq16vjendt2YdgMjzcM7/gslkxPv2guAgi2lUCjl83bbqM5j8xf7R0vkLVLf nwfGSmTKGf/PN0xCsWVE3DKWGtYp7zo+K0ylkvGjnGKlLHU821Ui8EUB4YMC0muAigqH V7oHsnTq9A8JqCqrj7sM52xw1N5+YJqBF2ix4BuvuCdu5dDRGXJb/p6q4eMM6oCm72NJ CcftB14vo4ncxEMjXxfgfO7JHWKrL7Cufe1LfvaCJY3XDS6LBjRB0DCv8rvwqwmUwdBx gDEw== X-Gm-Message-State: AOAM530VX4rP6/a5LwyyIxr0+U/BRBpnzLEQP+MpiukoeMJlTJ7VO3Bb XK5dIrAe0FBRW2sRZP74rQ3Sy+mU8cCO9cdV0vNjV23sHDo= X-Google-Smtp-Source: ABdhPJzX3L1waI6DnEg/6dEesGrXBlcN+NtMW9TjSmVLfq+ZGEoOfyKxKAmIEst6le44oh9uqP49WXN18BM0BuUsEnE= X-Received: by 2002:a05:6830:204a:: with SMTP id f10mr8788591otp.229.1599361515127; Sat, 05 Sep 2020 20:05:15 -0700 (PDT) MIME-Version: 1.0 From: Bart Schaefer Date: Sat, 5 Sep 2020 20:05:04 -0700 Message-ID: Subject: PATCH: Enable extendedglob in pattern with ${(*)name/pattern/replacement} To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000fa56dc05ae9c5ed2" X-Seq: 47364 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: Archived-At: --000000000000fa56dc05ae9c5ed2 Content-Type: text/plain; charset="UTF-8" In retrospect I'm surprised this wasn't thought of before. With this you can for example enable backreferences without having to turn on extendedglob for the whole surrounding context. A different character could be chosen if (*) seems unwise for some reason. It should also be fairly straightforward to make (**) toggle the option if there's a reason to force extendedglob off. Patch includes (very brief) doc, and a test case. --000000000000fa56dc05ae9c5ed2 Content-Type: text/plain; charset="US-ASCII"; name="splatqual.txt" Content-Disposition: attachment; filename="splatqual.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_keqidpr70 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvZXhwbi55byBiL0RvYy9ac2gvZXhwbi55bwppbmRleCBjYmRh ZTRkNTguLmIzMzk2NzIxZiAxMDA2NDQKLS0tIGEvRG9jL1pzaC9leHBuLnlvCisrKyBiL0RvYy9a c2gvZXhwbi55bwpAQCAtMTQyMiw3ICsxNDIyLDcgQEAgZXJyb3IsIGFuZCB0aGUgZmxhZyBpdHNl bGYgaGFzIG5vIGVmZmVjdC4KIGVuZGl0ZW0oKQogCiBUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSBt ZWFuaW5nZnVsIHdpdGggdGhlIHR0KCR7KS4uLnR0KCMpLi4udHQofSkgb3IKLXR0KCR7KS4uLnR0 KCUpLi4udHQofSkgZm9ybXMuICBUaGUgdHQoUykgYW5kIHR0KEkpIGZsYWdzIG1heSBhbHNvIGJl Cit0dCgkeykuLi50dCglKS4uLnR0KH0pIGZvcm1zLiAgVGhlIHR0KFMpLCB0dChJKSwgYW5kIHR0 KCopIGZsYWdzIG1heSBhbHNvIGJlCiB1c2VkIHdpdGggdGhlIHR0KCR7KS4uLnR0KC8pLi4udHQo fSkgZm9ybXMuCiAKIHN0YXJ0aXRlbSgpCkBAIC0xNDg4LDYgKzE0ODgsMTAgQEAgd2lsbCByZW1v dmUgdGhlIHNhbWUgbWF0Y2hlcyBhcyBmb3IgYHR0KCMpJywgYnV0IGluIHJldmVyc2Ugb3JkZXIs IGFuZCB0aGUKIGZvcm0gdXNpbmcgYHR0KCUlKScgd2lsbCByZW1vdmUgdGhlIHNhbWUgbWF0Y2hl cyBhcyBmb3IgYHR0KCMjKScgaW4gcmV2ZXJzZQogb3JkZXIuCiApCitpdGVtKHR0KCopKSgKK0Vu YWJsZSB0dChFWFRFTkRFRF9HTE9CKSBmb3Igc3Vic3RpdHV0aW9uIHZpYSB0dCgkeykuLi50dCgv KS4uLnR0KH0pIG9yCit0dCgkeykuLi50dCgvLykuLi50dCh9KS4KKykKIGl0ZW0odHQoQikpKAog SW5jbHVkZSB0aGUgaW5kZXggb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWF0Y2ggaW4gdGhlIHJl c3VsdC4KICkKZGlmZiAtLWdpdCBhL1NyYy9zdWJzdC5jIGIvU3JjL3N1YnN0LmMKaW5kZXggYjk4 ZGRhZjAyLi4yYWY2MTY1M2EgMTAwNjQ0Ci0tLSBhL1NyYy9zdWJzdC5jCisrKyBiL1NyYy9zdWJz dC5jCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBwYXJhbXN1YnN0KExpbmtMaXN0IGwsIExpbmtOb2Rl IG4sIGNoYXIgKipzdHIsIGludCBxdCwgaW50IHBmX2ZsYWdzLAogICAgIC8qCiAgICAgICogVGhp cyBleHByZXNzaXZlIG5hbWUgcmVmZXJzIHRvIHRoZSBzZXQgb2YgZmxhZ3Mgd2hpY2gKICAgICAg KiBpcyBhcHBsaWVkIHRvIG1hdGNoaW5nIGZvciAjLCAlLCAvIGFuZCB0aGVpciBkb3VibGVkIHZh cmlhbnRzOgotICAgICAqIChNKSwgKFIpLCAoQiksIChFKSwgKE4pLCAoUykuCisgICAgICogKE0p LCAoUiksIChCKSwgKEUpLCAoTiksIChTKSwgKCopLgogICAgICAqLwogICAgIGludCBmbGFncyA9 IDA7CiAgICAgLyogVmFsdWUgZnJvbSAoSSkgZmxhZywgdXNlZCBmb3IgZGl0dG8uICovCkBAIC0x OTMwLDYgKzE5MzAsMTAgQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFy ICoqc3RyLCBpbnQgcXQsIGludCBwZl9mbGFncywKIAkJY2FzZSAnQCc6CiAJCSAgICBub2pvaW4g PSAyOwkvKiBub2pvaW4gPSAyIG1lYW5zIGZvcmNlICovCiAJCSAgICBicmVhazsKKwkJY2FzZSAn Kic6CisJCWNhc2UgU3RhcjoKKwkJICAgIGZsYWdzIHw9IFNVQl9FR0xPQjsKKwkJICAgIGJyZWFr OwogCQljYXNlICdNJzoKIAkJICAgIGZsYWdzIHw9IFNVQl9NQVRDSDsKIAkJICAgIGJyZWFrOwpA QCAtMjgxMCw3ICsyODE0LDcgQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBj aGFyICoqc3RyLCBpbnQgcXQsIGludCBwZl9mbGFncywKIAkJICAgIGMgPT0gJyMnIHx8IGMgPT0g UG91bmQgfHwKIAkJICAgIGMgPT0gJz8nIHx8IGMgPT0gUXVlc3QgfHwKIAkJICAgIGMgPT0gJy8n KSkgewotCisJaW50IGVnbG9iID0gaXNzZXQoRVhURU5ERURHTE9CKTsKIAkvKgogCSAqIERlZmF1 bHQgaW5kZXggaXMgMSBpZiBubyAoSSkgb3IgKEkpIGdhdmUgemVyby4gICBCdXQKIAkgKiB3aHkg ZG9uJ3Qgd2Ugc2V0IHRoZSBkZWZhdWx0IGV4cGxpY2l0bHkgYXQgdGhlIHN0YXJ0CkBAIC0yODMy LDkgKzI4MzYsMTAgQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoq c3RyLCBpbnQgcXQsIGludCBwZl9mbGFncywKIAkgICAgY2hhciAqcHRyOwogCSAgICAvKgogCSAg ICAgKiBwcmV2aW91cyBmbGFncyBhcmUgaXJyZWxldmFudCwgZXhjZXB0IGZvciAoUykgd2hpY2gK LQkgICAgICogaW5kaWNhdGVzIHNob3J0ZXN0IHN1YnN0cmluZzsgZWxzZSBsb29rIGZvciBsb25n ZXN0LgorCSAgICAgKiBpbmRpY2F0ZXMgc2hvcnRlc3Qgc3Vic3RyaW5nOyBlbHNlIGxvb2sgZm9y IGxvbmdlc3QsCisJICAgICAjIGFuZCAoKikgd2hpY2ggdGVtcG9yYXJpbHkgZW5hYmxlcyBleHRl bmRlZCBnbG9iYmluZy4KIAkgICAgICovCi0JICAgIGZsYWdzID0gKGZsYWdzICYgU1VCX1NVQlNU UikgPyAwIDogU1VCX0xPTkc7CisJICAgIGZsYWdzID0gKChmbGFncyAmIFNVQl9TVUJTVFIpID8g MCA6IFNVQl9MT05HKXwoZmxhZ3MgJiBTVUJfRUdMT0IpOwogCSAgICBpZiAoKGMgPSAqcykgPT0g Jy8nKSB7CiAJCS8qIGRvdWJsZWQsIHNvIHJlcGxhY2UgYWxsIG9jY3VycmVuY2VzICovCiAJCWZs YWdzIHw9IFNVQl9HTE9CQUw7CkBAIC0zMTM2LDcgKzMxNDEsMTAgQEAgcGFyYW1zdWJzdChMaW5r TGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQgcXQsIGludCBwZl9mbGFncywKIAkJ Zm9yIChhcCA9IGF2YWw7ICphcDsgYXArKykgewogCQkgICAgdW50b2tlbml6ZSgqYXApOwogCQl9 CisJCWlmIChmbGFncyAmIFNVQl9FR0xPQikKKwkJICAgIG9wdHNbRVhURU5ERURHTE9CXSA9IDE7 CiAJCWdldG1hdGNoYXJyKCZhdmFsLCBzLCBmbGFncywgZmxudW0sIHJlcGxzdHIpOworCQlvcHRz W0VYVEVOREVER0xPQl0gPSBlZ2xvYjsKIAkgICAgfSBlbHNlIHsKIAkJaWYgKHZ1bnNldCkgewog CQkgICAgaWYgKHZ1bnNldCA+IDAgJiYgdW5zZXQoVU5TRVQpKSB7CkBAIC0zMTUxLDcgKzMxNTks MTAgQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQg cXQsIGludCBwZl9mbGFncywKIAkJICAgIGNvcGllZCA9IDE7CiAJCSAgICB1bnRva2VuaXplKHZh bCk7CiAJCX0KKwkJaWYgKGZsYWdzICYgU1VCX0VHTE9CKQorCQkgICAgb3B0c1tFWFRFTkRFREdM T0JdID0gMTsKIAkJZ2V0bWF0Y2goJnZhbCwgcywgZmxhZ3MsIGZsbnVtLCByZXBsc3RyKTsKKwkJ b3B0c1tFWFRFTkRFREdMT0JdID0gZWdsb2I7CiAJICAgIH0KIAkgICAgYnJlYWs7CiAJfQpkaWZm IC0tZ2l0IGEvU3JjL3pzaC5oIGIvU3JjL3pzaC5oCmluZGV4IDk0ZjUwOTljNi4uNmNmMWI0MTg2 IDEwMDY0NAotLS0gYS9TcmMvenNoLmgKKysrIGIvU3JjL3pzaC5oCkBAIC0xOTkxLDYgKzE5OTEs NyBAQCBzdHJ1Y3QgdGllZGRhdGEgewogI2RlZmluZSBTVUJfU1RBUlQJMHgxMDAwICAvKiBmb3Jj ZSBtYXRjaCBhdCBzdGFydCB3aXRoIFNVQl9FTkQKIAkJCQkgKiBhbmQgbm8gU1VCX1NVQlNUUiAq LwogI2RlZmluZSBTVUJfTElTVAkweDIwMDAgIC8qIG5vIHN1YnN0aXR1dGlvbiwgcmV0dXJuIGxp c3Qgb2YgbWF0Y2hlcyAqLworI2RlZmluZSBTVUJfRUdMT0IJMHg0MDAwCS8qIHVzZSBleHRlbmRl ZCBnbG9iYmluZyBpbiBwYXR0ZXJucyAqLwogCiAvKgogICogU3RydWN0dXJlIHJlY29yZGluZyBt dWx0aXBsZSBtYXRjaGVzIGluc2lkZSBhIHRlc3Qgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvVGVzdC9E MDJnbG9iLnp0c3QgYi9UZXN0L0QwMmdsb2IuenRzdAppbmRleCBmMjUwMjQ0ZTcuLjE3Njg0NmQ0 NiAxMDA2NDQKLS0tIGEvVGVzdC9EMDJnbG9iLnp0c3QKKysrIGIvVGVzdC9EMDJnbG9iLnp0c3QK QEAgLTc5Miw2ICs3OTIsMTEgQEAKICo+Ki9nbG9iLnRtcC8oZmxpcHxmbG9wKQogKj4qL2dsb2Iu dG1wLyhmbGlwfGZsb3ApL3RyYWlsaW5nL2NvbXBvbmVudHMKIAorICB1bnNldG9wdCBleHRlbmRl ZGdsb2IKKyAgcHJpbnQgLXIgLS0gJHsoKik9JHsoQHMuKy4pOi1BK0J9LygjYikoPykvLSR7KEwp bWF0Y2hbMV19ICR7bWF0Y2hbMV19fQorMDp0aGUgJyonIHF1YWxmaWVyIGVuYWJsZXMgZXh0ZW5k ZWRfZ2xvYiBmb3IgcGF0dGVybiBtYXRjaGluZworPi1hIEEgLWIgQgorCiAlY2xlYW4KIAogICMg Rml4IHVucmVhZGFibGUtZGlyZWN0b3J5IHBlcm1pc3Npb25zIHNvIHp0c3QgY2FuIGNsZWFuIHVw IHByb3Blcmx5Cg== --000000000000fa56dc05ae9c5ed2--