all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: J Krugman <jkrugman345@yahbitoo.com>
Subject: Re: Can Emacs pipe a buffer through another one?
Date: Fri, 18 Jun 2004 02:45:04 +0000 (UTC)	[thread overview]
Message-ID: <catkvg$igk$1@reader2.panix.com> (raw)
In-Reply-To: barmar-6C3FE7.17253017062004@comcast.dca.giganews.com

In <barmar-6C3FE7.17253017062004@comcast.dca.giganews.com> Barry Margolin <barmar@alum.mit.edu> writes:

>In article <cat1ar$c18$1@reader2.panix.com>,
> J Krugman <jkrugman345@yahbitoo.com> 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?

jill

[1] I imagine that threading could complicate this picture, but I
don't know much about threading, and I doubt that threading would
be a particularly popular thing to do for the kind of scripts we
are talking about here.

-- 
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	other threads:[~2004-06-18  2:45 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-17 21:09 Can Emacs pipe a buffer through another one? J Krugman
2004-06-17 21:25 ` Barry Margolin
2004-06-18  2:45   ` J Krugman [this message]
2004-06-18 15:24     ` Kevin Rodgers
2004-06-20 19:16       ` J Krugman
2004-06-21 18:32         ` Kevin Rodgers
2004-06-21 20:19           ` Kevin Rodgers
2004-06-17 23:53 ` Marco Parrone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='catkvg$igk$1@reader2.panix.com' \
    --to=jkrugman345@yahbitoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.