From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: J Krugman Newsgroups: gmane.emacs.help Subject: Re: Can Emacs pipe a buffer through another one? Date: Fri, 18 Jun 2004 02:45:04 +0000 (UTC) Organization: (NONE) Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Message-ID: References: NNTP-Posting-Host: deer.gmane.org X-Trace: sea.gmane.org 1088536558 20510 80.91.224.253 (29 Jun 2004 19:15:58 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 29 Jun 2004 19:15:58 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Jun 29 21:15:47 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1BfO54-0005P2-00 for ; Tue, 29 Jun 2004 21:15:46 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfO6k-0000cb-FU for geh-help-gnu-emacs@m.gmane.org; Tue, 29 Jun 2004 15:17:30 -0400 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!news.kjsl.com!news.pir.net!panix!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 50 Original-NNTP-Posting-Host: panix3.panix.com Original-X-Trace: reader2.panix.com 1087526704 18964 166.84.1.3 (18 Jun 2004 02:45:04 GMT) Original-X-Complaints-To: abuse@panix.com Original-NNTP-Posting-Date: Fri, 18 Jun 2004 02:45:04 +0000 (UTC) X-No-Confirm: yes User-Agent: nn/6.6.5 Original-Xref: shelby.stanford.edu gnu.emacs.help:123811 Original-To: help-gnu-emacs@gnu.org X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.help:19172 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:19172 In Barry Margolin writes: >In article , > J Krugman 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.