Reputation: 375
For example, I want to be able to type something like:
$ git diff | tempbuffer
and have the diff opened in a new, unsaved buffer.
Upvotes: 14
Views: 8399
Reputation: 213
My personal preference is for something you can type in Bash without having to manage any files:
git diff | (f=$(mktemp); cat > $f; emacsclient $f; rm -v $f)
emacsclient waits for you to be finished with the buffer before Bash deletes the temporary file.
I would use M-! (phils's answer) if I was starting the shell command from scratch and the above (which is similar to Sean's answer) if I was 'in the middle of something' in the shell and then decided 'I want to pipe this to Emacs'.
Upvotes: 1
Reputation: 17707
I made a package (e-sink)using information from the emacs wiki as a starting point. It works as you described and "tail"s the ouput instead of waiting until the process finishes to display everything.
Upvotes: 0
Reputation: 29772
Unfortunately emacsclient
doesn't read its standard input, so you need some kind of wrapper. Here's a Bash shell function that works for me:
tempbuffer() {
perl -MFile::Temp -MFile::Copy -e \
'copy *STDIN, $file = File::Temp->new; system "emacsclient", $file';
}
Upvotes: 4
Reputation: 73274
You can just use M-! -- it will run the command within the same cwd as your shell buffer, and output the results to a *Shell Command Output*
buffer.
Note that if the results are brief, that buffer will not be raised and the output will be copied to the echo area; however the buffer is still used and available. C-hf shell-command
RET has details of what constitutes "brief" output:
If the output is short enough to display in the echo area (determined by the variable
max-mini-window-height
ifresize-mini-windows
is non-nil), it is shown there. Otherwise, the buffer containing the output is displayed.
Upvotes: 10
Reputation: 4934
If you use eshell
you can redirect output to a buffer, e.g.
print foo > #<buffer bar>
which creates a new buffer bar
with the content 'foo'. For further details, see the Emacswiki at http://www.emacswiki.org/emacs/EshellRedirection.
Upvotes: 11