[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Can Emacs pipe a buffer through another one?
From: |
Kevin Rodgers |
Subject: |
Re: Can Emacs pipe a buffer through another one? |
Date: |
Mon, 21 Jun 2004 12:32:13 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2 |
J Krugman wrote:
> In <40D30930.6090309@yahoo.com> Kevin Rodgers <ihs_4664@yahoo.com> writes:
>>J Krugman wrote:
>>>Perl at least will let one give it code as the argument to the -e
>>>flag, which leaves STDIN available for input. For bash apparently
>>>something similar holds for the -c flag (but I have no experience
>>>with it). I imagine other scripting languages have similar
>>>mechanisms. Anyway, as long as the interpreter reads the entire
>>>script before it executes it (and I don't know of any interpreted
>>>language for which this isn't the case), then STDIN could serve
>>>both for feeding the script to the interpreter, and then feeding
>>>input to the running script[1]. The two tasks do not overlap in time,
>>>so it should be possible to accommodate both, no?
>
>>Cool!
>>
>>(with-current-buffer (get-buffer "A")
>> (shell-command-on-region (point-min)
>> (point-max)
>> (with-current-buffer (get-buffer "B")
>> (buffer-string))
>> (get-buffer "C")))
>>
>
> You lost me there! I don't see how this could possibly do what I
> described.
You want buffer A's contents passed as standard input to the script in
buffer B, with the output going to buffer C. So:
a. First select buffer buffer A, and pass its contents as standard input
to a shell command whose output goes to buffer C.
b. The shell command comes from the contents of buffer B, which is
passed via the -c option to the shell.
`C-h f shell-command-on-region' et al.
> Can you give me an example of how to use this?
Here's what I did:
1. Create buffer A with `C-x b A', and put some text in it:
one
two
three
2. Create buffer B with `C-x b B', and put a simple script in it:
cd ~; pwd
wc
cd /tmp; pwd
3. Create buffer C with `C-x b C'. This step could be avoided by using
(get-buffer-create "C") instead of (get-buffer "C").
4. Copy-and-paste the above form in the *scratch* buffer, and type `C-x
C-e' or `C-j' (see the "Lisp Interaction" and "Lisp Eval" nodes in
the Emacs manual).
5. Buffer C now contains:
/home/kevinr
3 6 28
/tmp
--
Kevin Rodgers
Re: Can Emacs pipe a buffer through another one?, Marco Parrone, 2004/06/29