Subject: Re: bug#69937: 29.1; Eshell ${} expansion includes stderr

From: Jim Porter <[email-masked]>
Date: Sat, 23 Mar 2024 12:31:37 -0700

On 3/21/2024 10:56 PM, Jim Porter wrote:
> I'll try and put together a patch for this over the weekend.

I looked into this some more and found that it's not quite so easy to do 
this in a way that preserves functionality. Normally, you should be able 
to use the "2>&1" syntax to redirect (and thus capture) *all* the 
output. However, that fails for the $<command> form, since it will 
mis-parse this:

   $<command 2>&1>

Escaping the inner ">" won't work, since the parser doesn't unescape 
that character. Unescaping that would be tricky to get anyway, so I'm 
not sure it's the best route. Another hypothetical syntax would be 
(whitespace just for readability):

   $< { command 2>&1 } >

That *also* doesn't work today, but reworking 'eshell-find-delimiter' 
should make that possible, and likely fix some other surprising cases in 
the Eshell syntax. I have some ideas for how to do this, but it's a 
pretty invasive change, so it'll take quite a bit of thought. I don't 
have time to do this right now, but I'll take a look in the coming month 
or so.

Thankfully, aside from this wrinkle, all the *other* parts to fix this 
bug are pretty straightforward, and in fact I already have a WIP patch 
for them.