From xemacs-m  Thu Feb 27 16:12:36 1997
Received: from venus.Sun.COM (venus.Sun.COM [192.9.25.5])
	by xemacs.org (8.8.5/8.8.5) with SMTP id QAA09512
	for <xemacs-beta@xemacs.org>; Thu, 27 Feb 1997 16:12:33 -0600 (CST)
Received: from Eng.Sun.COM ([129.146.1.25]) by venus.Sun.COM (SMI-8.6/mail.byaddr) with SMTP id OAA04657 for <xemacs-beta@xemacs.org>; Thu, 27 Feb 1997 14:11:44 -0800
Received: from kindra.eng.sun.com by Eng.Sun.COM (SMI-8.6/SMI-5.3)
	id OAA12875; Thu, 27 Feb 1997 14:11:36 -0800
Received: from xemacs.eng.sun.com by kindra.eng.sun.com (SMI-8.6/SMI-SVR4)
	id OAA19586; Thu, 27 Feb 1997 14:11:36 -0800
Received: by xemacs.eng.sun.com (SMI-8.6/SMI-SVR4)
	id OAA29145; Thu, 27 Feb 1997 14:11:35 -0800
Date: Thu, 27 Feb 1997 14:11:35 -0800
Message-Id: <199702272211.OAA29145@xemacs.eng.sun.com>
From: Martin Buchholz <mrb@Eng.Sun.COM>
To: Hrvoje Niksic <hniksic@srce.hr>
Cc: xemacs-beta@xemacs.org
Subject: [comp.emacs] Re: calling a unix prog from elisp
In-Reply-To: <kigrai2xvke.fsf@jagor.srce.hr>
References: <kigrai2xvke.fsf@jagor.srce.hr>
Reply-To: Martin Buchholz <mrb@Eng.Sun.COM>
Mime-Version: 1.0 (generated by tm-edit 7.100)
Content-Type: text/plain; charset=US-ASCII

>>>>> "Hrv" == Hrvoje Niksic <hniksic@srce.hr> writes:

Hrv> How about adding `with-temp-buffer' to prim/somewhere?  I have
Hrv> evaluated it, and

Hrv> (with-temp-buffer (call-process "ls" "/dev/null" t nil "-al") (buffer-string))

Hrv> works fine for me.  I'd hate to see Erik's work go unattended in
Hrv> XEmacs. ;-)

We have exec-to-string, which makes all this even easier.

(exec-to-string "ls")

We should add with-temp-buffer to XEmacs, to whatever file it got
added to in Emacs 19.35.

I wrote a similar macro, with-string-as-buffer-contents, in
mule-coding.el, which has advantages and disadvantages over
with-temp-buffer .  This macro should be added to the same file in
prim/ as with-temp-buffer.


(defmacro with-string-as-buffer-contents (str &rest body)
  "With the contents of the current buffer being STR, run BODY.
Returns the new contents of the buffer, as modified by BODY.
The original current buffer is restored afterwards."
  `(let ((curbuf (current-buffer))
         (tempbuf (get-buffer-create " *string-as-buffer-contents*")))
     (unwind-protect
         (progn
           (set-buffer tempbuf)
           (buffer-disable-undo (current-buffer))
           (erase-buffer)
           (insert ,str)
           ,@body
           (buffer-string))
       (erase-buffer tempbuf)
       (set-buffer curbuf))))

Martin

