From mboxrd@z Thu Jan 1 00:00:00 1970 From: Erik Iverson Subject: [babel] some lisp/slime progress Date: Sun, 20 Feb 2011 20:22:54 -0600 Message-ID: <4D61CC7E.7030109@ccbr.umn.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=50017 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PrLQc-0002ir-HU for Emacs-orgmode@gnu.org; Sun, 20 Feb 2011 21:23:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PrLQb-0005Gv-8w for Emacs-orgmode@gnu.org; Sun, 20 Feb 2011 21:23:10 -0500 Received: from pegasus.biostat.wisc.edu ([144.92.73.35]:39653) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PrLQb-0005Gq-4E for Emacs-orgmode@gnu.org; Sun, 20 Feb 2011 21:23:09 -0500 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Emacs-orgmode@gnu.org Hello, I recently posted on the inability of ob-lisp.el to submit multiple forms to a running CL session and return the result. http://permalink.gmane.org/gmane.emacs.orgmode/37325 I have made some progress in fixing this, but it *required defining a new function in SLIME, so I do not post this as a patch to org-mode, since it depends on more than org-mode*. I don't know if this is something that truly belongs in SLIME, so I may follow-up on that mailing list. NB: this only works when :session is specified. In SLIME swank.lisp, I define: (defslimefun interactive-eval-region-orgmode (string) (with-buffer-syntax () (with-retry-restart (:msg "Retry SLIME interactive evaluation request.") (list (format nil "~{~S~^~%~}" (eval-region string)))))) Then, in ob-lisp.el, apply the following patch. diff --git a/lisp/ob-lisp.el b/lisp/ob-lisp.el index 600b79e..2980cc8 100644 --- a/lisp/ob-lisp.el +++ b/lisp/ob-lisp.el @@ -78,7 +78,11 @@ This function is called by `org-babel-execute-src-block'" (if session ;; session evaluation (save-window-excursion - (cadr (slime-eval `(swank:eval-and-grab-output ,full-body)))) + (with-temp-buffer + (insert full-body) + (slime-eval + `(swank:interactive-eval-region-orgmode + ,(buffer-substring-no-properties (point-min) (point-max)))))) ;; external evaluation (let ((script-file (org-babel-temp-file "lisp-script-"))) (with-temp-file script-file Then, things like the following work, where I assume you've already started M-x slime. #+begin_src emacs-lisp :session (defvar test1 "test1 value") (defvar test2 "test2 value") test2 #+end_src #+results: : test2 value Best Regards, --Erik Iverson