From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#30725: eshell: built-ins do not handle command substitution Date: Thu, 20 Jan 2022 19:10:31 -0800 Message-ID: <616b5ec8-c872-7fe8-7548-2c7bec9f8cd5@gmail.com> References: <1fe5dea514d7a42c46ff8e80396ca3b1@riseup.net> <87v8yh8mu3.fsf@gmx.de> <9228db8b-303a-4dd1-12b1-8d6649f57a90@gmail.com> <87v8yezfwc.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------6DDD4967FF7428A04FA15C69" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35972"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 30725@debbugs.gnu.org, Michael Albinus , yegortimoshenko@riseup.net To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jan 21 04:13:48 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nAkN1-00099a-4g for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 21 Jan 2022 04:13:47 +0100 Original-Received: from localhost ([::1]:54856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAkN0-0003Jw-7j for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 20 Jan 2022 22:13:46 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:47652) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAkKR-0006oH-Mh for bug-gnu-emacs@gnu.org; Thu, 20 Jan 2022 22:11:08 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:38669) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nAkKM-0007ES-GC for bug-gnu-emacs@gnu.org; Thu, 20 Jan 2022 22:11:07 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nAkKM-0003gH-65 for bug-gnu-emacs@gnu.org; Thu, 20 Jan 2022 22:11:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 21 Jan 2022 03:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30725 X-GNU-PR-Package: emacs Original-Received: via spool by 30725-submit@debbugs.gnu.org id=B30725.164273464114119 (code B ref 30725); Fri, 21 Jan 2022 03:11:02 +0000 Original-Received: (at 30725) by debbugs.gnu.org; 21 Jan 2022 03:10:41 +0000 Original-Received: from localhost ([127.0.0.1]:59805 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nAkK0-0003fe-Cl for submit@debbugs.gnu.org; Thu, 20 Jan 2022 22:10:40 -0500 Original-Received: from mail-pj1-f51.google.com ([209.85.216.51]:55856) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nAkJy-0003f1-JG for 30725@debbugs.gnu.org; Thu, 20 Jan 2022 22:10:39 -0500 Original-Received: by mail-pj1-f51.google.com with SMTP id d5so5757496pjk.5 for <30725@debbugs.gnu.org>; Thu, 20 Jan 2022 19:10:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=KxOspGejfU74AQ8Zli7SC73l30FMsQDQExA6RcTC69k=; b=QShMRfWACs9xfg/Vm8Ib2I+Fv/KdDyZeWOrUfVM3bJMah71us6FyFwdm+2OUD07Dzl 1dZVxvqom4EZtCyaw460YL10417+bx9DN6BlrSwLjyZRlcEth7KdHlsexXJu6//X1eX7 APxK92Go5r2eQuUD3Sm7NejQNt2sm0JjvEHb4ZyQZyaSFiccgHfYrJY+MTvdkkt0ugD/ 2qy2rVKUddKmWJsFrytarILKZ4HhLv0RD5qr8i9UNWBJcw3VLBA3BeVwgj8fa8iKJ/6l slQF/Rn7zRWflToVU3ndZaN2+bslV3xUydOju9BCgNzK1l+JU0g/XPzUX4LymlUXO0YH uUbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=KxOspGejfU74AQ8Zli7SC73l30FMsQDQExA6RcTC69k=; b=OPdsImJ6FGph+LUWP5eGqcNz1gPx9KhjyYyRbz54QyKzRJQAuBa8+taLGyfKplY6qe STXrwkllMFfr6/AVy2oEkfhe9Qelqtn++xKfjduXOr/UoweZ7e50cgHgokd2epntdHZ/ JYW8e43i5Yl50w3RGHKaQhxWy9jcfQj/l2KUiUYoc2bVTsBjDhxyziRJmljdGDulsHXg oRqPx53z2XmdkKrkPY70rIHwTQZvk2hlz7iX4aK6L/wNPWgK3bRHmw0oTnzZ6TN2pFRX lzuQZbRogyIeceEvVd04t0tCFVKXdsnQhSqWGhc67U3iW9QN7Gj6fs+cuPh9guRRMUN3 ShmA== X-Gm-Message-State: AOAM530jhRDIXP1fHcpOr4uGYWxP3221TEGhJuA1Q7TESK4v7G1ziFw4 CGnfnO+e8xAtXilP2ri64kI= X-Google-Smtp-Source: ABdhPJyEiY2bo5JKtCDnPw4Fnid/YQKrqfwaZUeF+c3SJAdlGRBEtjZAvfag99Mydcjuo0sUh6RBkg== X-Received: by 2002:a17:90b:3143:: with SMTP id ip3mr2448313pjb.161.1642734632753; Thu, 20 Jan 2022 19:10:32 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id p4sm4087050pfw.214.2022.01.20.19.10.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Jan 2022 19:10:31 -0800 (PST) In-Reply-To: <87v8yezfwc.fsf@gnus.org> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:224720 Archived-At: This is a multi-part message in MIME format. --------------6DDD4967FF7428A04FA15C69 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 1/20/2022 5:38 AM, Lars Ingebrigtsen wrote: > Jim Porter writes: > >> Oh, right. I'd forgotten about `skip-unless'. Here's a patch with that >> added. Thanks. > > Looks good to me; pushed to Emacs 29. Drat. I just found bug#12689, which has a wider variety of test cases, and saw that I missed a pretty glaring case here: echo ${*echo hi}-there That is, using a subcommand that gets concatenated to a constant string to form the argument (or other variations involving concatenation). Both before and after my prior fix, that would print "nil-there". With this new patch, it prints "hi-there" as expected. This new patch should be considerably more robust, since it searches recursively for any `(eshell-as-subcommand FOO)' forms to check them. That way we don't require the command form to look *exactly* one way. I used a generator for this, since that's the clearest to my eyes, but I'm open to other implementations. For completeness, this only fixes the first of two issues in bug#12689 as described by Samer Masterson: > There are two issues contained in this bug: eshell-plain-command doesn't > wait for the process to finish before returning, and echo parses output > from subcommands as lisp objects instead of as args. The latter case is, echo ${*echo -e "foo\nbar"}-baz which used to print "nil-baz" (or '("foo" "bar")-baz' if you use *echo in both spots). With my patch here, it always prints '("foo" "bar")-baz', which is at least wrong in a consistent way now. :) --------------6DDD4967FF7428A04FA15C69 Content-Type: text/plain; charset=UTF-8; name="0001-Further-improve-determination-of-when-commands-can-b.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Further-improve-determination-of-when-commands-can-b.pa"; filename*1="tch" RnJvbSBlODVhYzE5MGU0MzJiY2RhYmNkMjQ0MzE3NThlMDdiZmJhYjM4NWFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFRodSwgMjAgSmFuIDIwMjIgMTg6NTE6MTQgLTA4MDAKU3ViamVjdDogW1BB VENIXSBGdXJ0aGVyIGltcHJvdmUgZGV0ZXJtaW5hdGlvbiBvZiB3aGVuIGNvbW1hbmRzIGNh biBiZSBpbnZva2VkCiBkaXJlY3RseQoKVGhpcyBjb3ZlcnMgdGhlIGNhc2Ugd2hlbiBhIHN1 YmNvbW1hbmQgaXMgdG8gYmUgaW52b2tlZCBpbiBtb3JlIHBsYWNlcwp0aGFuIGJlZm9yZSwg Zm9yIGV4YW1wbGUgd2hlbiBhIHN1YmNvbW1hbmQgaXMgY29uY2F0ZW5hdGVkIGluIGFuCmFy Z3VtZW50LgoKKiBsaXNwL2VzaGVsbC9lc2gtY21kLmVsIChlc2hlbGwtLWZpbmQtc3ViY29t bWFuZHMpOiBOZXcgZnVjdGlvbi4KKGVzaGVsbC0taW52b2tlLWNvbW1hbmQtZGlyZWN0bHkp OiBVc2UgJ2VzaGVsbC1maW5kLXN1YmNvbW1hbmRzJy4KCiogdGVzdC9saXNwL2VzaGVsbC9l c2hlbGwtdGVzdHMuZWwKKGVzaGVsbC10ZXN0L2ludGVycC1jbWQtZXh0ZXJuYWwtY29uY2F0 KTogTmV3IHRlc3QuCi0tLQogbGlzcC9lc2hlbGwvZXNoLWNtZC5lbCAgICAgICAgICAgfCAy OCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB0ZXN0L2xpc3AvZXNoZWxsL2VzaGVs bC10ZXN0cy5lbCB8ICA3ICsrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9u cygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9lc2hlbGwvZXNoLWNt ZC5lbCBiL2xpc3AvZXNoZWxsL2VzaC1jbWQuZWwKaW5kZXggMjVlM2E1YTIwNS4uMDRkNjVk ZjRmMyAxMDA2NDQKLS0tIGEvbGlzcC9lc2hlbGwvZXNoLWNtZC5lbAorKysgYi9saXNwL2Vz aGVsbC9lc2gtY21kLmVsCkBAIC0xMDcsNiArMTA3LDcgQEAKIChyZXF1aXJlICdlc2gtbW9k dWxlKQogKHJlcXVpcmUgJ2VzaC1pbykKIChyZXF1aXJlICdlc2gtZXh0KQorKHJlcXVpcmUg J2dlbmVyYXRvcikKIAogKGV2YWwtd2hlbi1jb21waWxlCiAgIChyZXF1aXJlICdjbC1saWIp CkBAIC05MDMsNiArOTA0LDE3IEBAIHBjb21wbGV0ZS9lc2hlbGwtbW9kZS9lc2hlbGwtZGVi dWcKICAgIkNvbXBsZXRpb24gZm9yIHRoZSBgZGVidWcnIGNvbW1hbmQuIgogICAod2hpbGUg KHBjb21wbGV0ZS1oZXJlICcoImVycm9ycyIgImNvbW1hbmRzIikpKSkKIAorKGl0ZXItZGVm dW4gZXNoZWxsLS1maW5kLXN1YmNvbW1hbmRzIChoYXlzdGFjaykKKyAgIlJlY3Vyc2l2ZWx5 IHNlYXJjaCBmb3Igc3ViY29tbWFuZCBmb3JtcyBpbiBIQVlTVEFDSy4KK1RoaXMgeWllbGRz IHRoZSBTVUJDT01NQU5EcyB3aGVuIGZvdW5kIGluIGZvcm1zIGxpa2UKK1wiKGVzaGVsbC1h cy1zdWJjb21tYW5kIFNVQkNPTU1BTkQpXCIuIgorICAoZG9saXN0IChlbGVtIGhheXN0YWNr KQorICAgIChjb25kCisgICAgICgoZXEgKGNhci1zYWZlIGVsZW0pICdlc2hlbGwtYXMtc3Vi Y29tbWFuZCkKKyAgICAgIChpdGVyLXlpZWxkIChjZHIgZWxlbSkpKQorICAgICAoKGxpc3Rw IGVsZW0pCisgICAgICAoaXRlci15aWVsZC1mcm9tIChlc2hlbGwtLWZpbmQtc3ViY29tbWFu ZHMgZWxlbSkpKSkpKQorCiAoZGVmdW4gZXNoZWxsLS1pbnZva2UtY29tbWFuZC1kaXJlY3Rs eSAoY29tbWFuZCkKICAgIkRldGVybWluZSB3aGV0aGVyIHRoZSBnaXZlbiBDT01NQU5EIGNh biBiZSBpbnZva2VkIGRpcmVjdGx5LgogQ09NTUFORCBzaG91bGQgYmUgYSBub24tdG9wLWxl dmVsIEVzaGVsbCBjb21tYW5kIGluIHBhcnNlZCBmb3JtLgpAQCAtOTE2LDggKzkyOCw3IEBA IGVzaGVsbC0taW52b2tlLWNvbW1hbmQtZGlyZWN0bHkKICogTkFNRSBpcyBhIHN0cmluZyBy ZWZlcnJpbmcgdG8gYW4gYWxpYXMgZnVuY3Rpb24gYW5kIGlzbid0IGEKICAgY29tcGxleCBj b21tYW5kIChzZWUgYGVzaGVsbC1jb21wbGV4LWNvbW1hbmRzJykuCiAKLSogQW55IGFyZ3Vt ZW50IGluIEFSR1MgdGhhdCBjYWxscyBhIHN1YmNvbW1hbmQgY2FuIGFsc28gYmUKLSAgaW52 b2tlZCBkaXJlY3RseS4iCisqIEFueSBzdWJjb21tYW5kcyBpbiBBUkdTIGNhbiBhbHNvIGJl IGludm9rZWQgZGlyZWN0bHkuIgogICAod2hlbiAoYW5kIChlcSAoY2FyIGNvbW1hbmQpICdl c2hlbGwtdHJhcC1lcnJvcnMpCiAgICAgICAgICAgICAgKGVxIChjYXIgKGNhZHIgY29tbWFu ZCkpICdlc2hlbGwtbmFtZWQtY29tbWFuZCkpCiAgICAgKGxldCAoKG5hbWUgKGNhZHIgKGNh ZHIgY29tbWFuZCkpKQpAQCAtOTMxLDE1ICs5NDIsMTAgQEAgZXNoZWxsLS1pbnZva2UtY29t bWFuZC1kaXJlY3RseQogCSAgICAgICAgICh0aHJvdyAnc2ltcGxlIG5pbCkpKSkKIAkgICAo ZXNoZWxsLWZpbmQtYWxpYXMtZnVuY3Rpb24gbmFtZSkKICAgICAgICAgICAgKGNhdGNoICdp bmRpcmVjdC1zdWJjb21tYW5kCi0JICAgICAoZG9saXN0IChhcmcgYXJncyB0KQotICAgICAg ICAgICAgICAgKHBjYXNlIGFyZwotICAgICAgICAgICAgICAgICAoYChlc2hlbGwtZXNjYXBl LWFyZwotICAgICAgICAgICAgICAgICAgICAobGV0ICxfCi0gICAgICAgICAgICAgICAgICAg ICAgKGVzaGVsbC1jb252ZXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgIChlc2hlbGwtY29t bWFuZC10by12YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgKGVzaGVsbC1hcy1zdWJj b21tYW5kICxzdWJjb21tYW5kKSkpKSkKLSAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVz aGVsbC0taW52b2tlLWNvbW1hbmQtZGlyZWN0bHkgc3ViY29tbWFuZCkKLSAgICAgICAgICAg ICAgICAgICAgKHRocm93ICdpbmRpcmVjdC1zdWJjb21tYW5kIG5pbCkpKSkpKSkpKSkKKyAg ICAgICAgICAgICAoaXRlci1kbyAoc3ViY29tbWFuZCAoZXNoZWxsLS1maW5kLXN1YmNvbW1h bmRzIGFyZ3MpKQorICAgICAgICAgICAgICAgKHVubGVzcyAoZXNoZWxsLS1pbnZva2UtY29t bWFuZC1kaXJlY3RseSBzdWJjb21tYW5kKQorICAgICAgICAgICAgICAgICAodGhyb3cgJ2lu ZGlyZWN0LXN1YmNvbW1hbmQgbmlsKSkpCisgICAgICAgICAgICAgdCkpKSkpCiAKIChkZWZ1 biBlc2hlbGwtaW52b2tlLWRpcmVjdGx5IChjb21tYW5kKQogICAiRGV0ZXJtaW5lIHdoZXRo ZXIgdGhlIGdpdmVuIENPTU1BTkQgY2FuIGJlIGludm9rZWQgZGlyZWN0bHkuCmRpZmYgLS1n aXQgYS90ZXN0L2xpc3AvZXNoZWxsL2VzaGVsbC10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lc2hl bGwvZXNoZWxsLXRlc3RzLmVsCmluZGV4IGM0Y2I5YmY0ODUuLjFhN2FiMGFiMDYgMTAwNjQ0 Ci0tLSBhL3Rlc3QvbGlzcC9lc2hlbGwvZXNoZWxsLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlz cC9lc2hlbGwvZXNoZWxsLXRlc3RzLmVsCkBAIC0xNjcsNiArMTY3LDEzIEBAIGVzaGVsbC10 ZXN0L2ludGVycC1jbWQtZXh0ZXJuYWwKICAgIChlc2hlbGwtY29tbWFuZC1yZXN1bHQtcCAi ZWNobyAkeyplY2hvIGhpfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlcbiIp KSkKIAorKGVydC1kZWZ0ZXN0IGVzaGVsbC10ZXN0L2ludGVycC1jbWQtZXh0ZXJuYWwtY29u Y2F0ICgpCisgICJJbnRlcnBvbGF0ZSBjb21tYW5kIHJlc3VsdCBmcm9tIGV4dGVybmFsIGNv bW1hbmQgd2l0aCBjb25jYXRlbmF0aW9uIgorICAoc2tpcC11bmxlc3MgKGV4ZWN1dGFibGUt ZmluZCAiZWNobyIpKQorICAod2l0aC10ZW1wLWVzaGVsbAorICAgKGVzaGVsbC1jb21tYW5k LXJlc3VsdC1wICJlY2hvICR7ZWNobyBoaX0tJHsqZWNobyB0aGVyZX0iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImhpLXRoZXJlXG4iKSkpCisKIChlcnQtZGVmdGVzdCBlc2hl bGwtdGVzdC93aW5kb3ctaGVpZ2h0ICgpCiAgICIkTElORVMgc2hvdWxkIGVxdWFsICh3aW5k b3ctaGVpZ2h0KSIKICAgKHNob3VsZCAoZXNoZWxsLXRlc3QtY29tbWFuZC1yZXN1bHQgIj0g JExJTkVTICh3aW5kb3ctaGVpZ2h0KSIpKSkKLS0gCjIuMjUuMQoK --------------6DDD4967FF7428A04FA15C69--