|
From: | Jim Porter |
Subject: | bug#55590: [PATCH] 29.0.50; Eshell subcommands clobber pipelines and produce incorrect output |
Date: | Sun, 22 May 2022 20:43:28 -0700 |
On 5/22/2022 8:34 PM, Jim Porter wrote:
Starting from `emacs -Q -f eshell', enter the following command: echo ${*echo hi} | rev The output is: ~ $ ihThat is, the output of the command ended up *after* the prompt, when it should be before.
The attached patch fixes this issue. It might not be the *best* way to do it, but it's the least-invasive I could come up with. The `make-symbol' dance is a bit awkward, but Eshell already uses it for `eshell-command-to-value' / `eshell-do-command-to-value', so hopefully it's ok. I'm open to other solutions though. It's possible the bug is really in `eshell-do-eval', since I'd expect the original code to work, but `eshell-do-eval' is pretty tricky, and I don't want to poke at it too hard for fear that other things will break.
Long-term, the best way to fix this might be to rip out `eshell-do-eval' entirely, which iteratively evaluates parts of Eshell commands (so as not to hang Emacs) and use the generator.el machinery instead. I looked into that briefly, and it seems like it would be quite a bit of work. And I don't fully understand generator.el's implementation yet anyway...
0001-Keep-subcommands-in-pipelines-from-clobbering-the-he.patch
Description: Text document
[Prev in Thread] | Current Thread | [Next in Thread] |