[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#46351: 28.0.50; Add convenient way to bypass Eshell's own pipelining
From: |
Sean Whitton |
Subject: |
bug#46351: 28.0.50; Add convenient way to bypass Eshell's own pipelining |
Date: |
Sat, 06 Feb 2021 13:06:53 -0700 |
Most people who use Eshell a lot need to be aware of the limitations of
its support for shell pipelines: primarily, that all data in pipelines
has to go through Emacs buffers, and that can be slow. If you're
running pipelines which will move a lot of data, you should use a system
shell which will be more performant.
Currently, if Eshell is your primary shell, it's not particularly
convenient to switch to using an operating system shell when you're
preparing a pipeline that you know is going to move a lot of data. You
would need either to switch to a shell-mode buffer, or quote and escape
your Eshell input and put something like `bash -c' in front of it.
I think that it would be good to have a way to easily toggle Eshell's
own pipelining support on and off for particular commands. I have come
up with the attached patches. When the new functions I've defined are
enabled, you can type
!! foo | bar 'arg' >baz >>#<buffer *scratch*>
and it will be executed by Eshell as if you had typed
bash -c 'foo | bar '"'"'arg'"'"' >baz' >>#<buffer *scratch*>
The idea is that you can easily toggle Eshell's pipelining on and off as
appropriate to your needs just by adding and removing the "!!" prefix.
I think that the patches I've prepared are a clean implementation of
this feature that would be good to include in Emacs.
--
Sean Whitton
0001-Add-eshell-restore-unexpanded-input.patch
Description: Text Data
0002-Add-eshell-shell-command-and-eshell-expand-to-eshell.patch
Description: Text Data
- bug#46351: 28.0.50; Add convenient way to bypass Eshell's own pipelining,
Sean Whitton <=