Erik Iverson <er...@ccbr.umn.edu> writes: > 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. >
It looks like you've inserted an orgmode specific function into slime? Maybe your slime patch could be changed to the introduction of a new hook to which this org-mode specific function could be bound? I imagine the slime mailing list would know the best solution here. > > NB: this only works when :session is specified. > I think it is reasonable for the :session header argument to be added to an `org-babel-default-header-args:lisp' variable defined in ob-lisp. That would remove the need to constantly specify :session. This is similar to the ob-clojure approach, which by default always uses a slime session. > > 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 > Great, I look forward to playing with this as soon as I find some time... Thanks for sharing -- Eric > > > Best Regards, > --Erik Iverson _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode