From 1952afa6ed39f0d4a0c08632ea1ba07a855c11be Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Fri, 3 Aug 2012 13:33:31 -0600 Subject: [PATCH] more efficient org-babel-with-temp-filebuffer * lisp/ob-tangle.el (org-babel-with-temp-filebuffer): Don't execute macro argument multiple times. --- lisp/ob-tangle.el | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el index 74ebddfd0..3cdecae30 100644 --- a/lisp/ob-tangle.el +++ b/lisp/ob-tangle.el @@ -122,13 +122,15 @@ represented in the file." `progn', then kill the FILE buffer returning the result of evaluating BODY." (declare (indent 1)) - (let ((temp-result (make-symbol "temp-result")) + (let ((temp-path (make-symbol "temp-path")) + (temp-result (make-symbol "temp-result")) (temp-file (make-symbol "temp-file")) (visited-p (make-symbol "visited-p"))) - `(let (,temp-result ,temp-file - (,visited-p (get-file-buffer ,file))) - (org-babel-find-file-noselect-refresh ,file) - (setf ,temp-file (get-file-buffer ,file)) + `(let* ((,temp-path ,file) + (,visited-p (get-file-buffer ,temp-path)) + ,temp-result ,temp-file) + (org-babel-find-file-noselect-refresh ,temp-path) + (setf ,temp-file (get-file-buffer ,temp-path)) (with-current-buffer ,temp-file (setf ,temp-result (progn ,@body))) (unless ,visited-p (kill-buffer ,temp-file))