[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Can Emacs pipe a buffer through another one?

From: J Krugman
Subject: Re: Can Emacs pipe a buffer through another one?
Date: Sun, 20 Jun 2004 19:16:00 +0000 (UTC)
User-agent: nn/6.6.5

In <address@hidden> Kevin Rodgers <address@hidden> writes:

>J Krugman wrote:
> > In <address@hidden> Barry Margolin <address@hidden> writes:
> >>In article <address@hidden>,
> >>J Krugman <address@hidden> wrote:
> >
> >>>Suppose I have two buffers A and B, not necessarily associated with
> >>>a file on disk, and furthermore, suppose that B's content is a
> >>>script (bash, perl, python, etc.) that prints to STDOUT a transform
> >>>of whatever it reads from STDIN.  (Assume that the first line of
> >>>B is a suitable shebang line.)  It would be really cool if, without
> >>>leaving Emacs, and without creating any new files on disk, one
> >>>could feed the contents of buffer A as STDIN to the script in buffer
> >>>B, and take the resulting output and insert them in some other
> >>>buffer C (possibly replacing some or all of C's contents).  (Of
> >>>course, there should be no reason why these buffers should all be
> >>>different from each other.  For instance, B could be a script that
> >>>rewrites itself.)
> >>>
> >>>Even cooler would be if instead of using whole buffers for program
> >>>and data as described above, one could use regions.
> >>>
> >>>Can one already do any of this in Emacs?  If not, can someone give
> >>>me a clue about how to write such a thing in Emacs Lisp?
> >
> >>I can't think of any way this could be done.  If the script isn't put in
> >>a file, then the way to feed the script to the interpreter would be
> >>through its stdin.  But if the interpreter is reading the script on
> >>stdin, then where will it read the data from?
> >
> > 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?


>(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.  Can you give me an example of how to use this?


To  s&e^n]d  me  m~a}i]l  r%e*m?o\v[e  bit from my a|d)d:r{e:s]s.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]