From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.help Subject: Re: Can Emacs pipe a buffer through another one? Date: Mon, 21 Jun 2004 12:32:13 -0600 Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Message-ID: <40D729AD.9010105@yahoo.com> References: <40D30930.6090309@yahoo.com> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1088537387 23035 80.91.224.253 (29 Jun 2004 19:29:47 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 29 Jun 2004 19:29:47 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Jun 29 21:29:35 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 1BfOIR-0006oc-00 for ; Tue, 29 Jun 2004 21:29:35 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfOK7-00083Q-68 for geh-help-gnu-emacs@m.gmane.org; Tue, 29 Jun 2004 15:31:19 -0400 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!newsmi-us.news.garr.it!NewsITBone-GARR!news.mailgate.org!newsfeed.stueberl.de!fu-berlin.de!uni-berlin.de!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 67 Original-X-Trace: news.uni-berlin.de mifkyPyRN5qUC0rkQO8nNQjJVgq6qk74y8nIWF/3xeyBdbG6w= User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2 X-Accept-Language: en-us Original-Xref: shelby.stanford.edu gnu.emacs.help:123877 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:19238 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:19238 J Krugman wrote: > In <40D30930.6090309@yahoo.com> Kevin Rodgers 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