[slime-devel] cl-workbooks in emacs?
Mirko Vukovic
mirko.vukovic at gmail.com
Tue Mar 1 16:15:59 UTC 2011
On Sun, Feb 20, 2011 at 9:09 AM, Mirko Vukovic <mirko.vukovic at gmail.com> wrote:
>
>
> On Sat, Feb 19, 2011 at 10:39 AM, Helmut Eller <heller at common-lisp.net>
> wrote:
>>
>> * Mirko Vukovic [2011-02-19 14:30] writes:
>>
>> > Are there any packages that can help me accomplish this?
>>
>> I've used org-babel[1] a bit but only with gnuplot. A lisp program
>> generates the data file, org-mode calls gnuplot to generates the graphs
>> and combines them into single html document. I think there is also some
>> Slime integration for org-babel available but I have no experience with
>> that.
>>
>> Helmut
>>
>> [1]http://orgmode.org/worg/org-contrib/babel/
>>
>
>
> I would like to use both.
>
> 1) Generate the files with dribble. I can easily input text into repl.
>
> 2) Then switch to org-mode to edit the text and prepare for printing.
>
> However, I got a problem with dribble & slime on my windows xp:
> - running clisp on cygwin, dribble works fine
> - running clisp from slime on emacs-nt, dribble does not work.
>
> This is not the first time I am having issues running cygwin's clisp via
> slime on emacs-nt. I hope in the near future to get a laptop where I can
> run both windows and linux, and do lisp work on the linux side.
>
> Enough dribbling :-)
>
>
> Mirko
Regarding dribble:
The issue was not clisp & cywgin, but slime, as (I am guessing here), it
is sending the input and output via streams that are not captured by dribble.
However, that is not a big problem. After some thought, I realized
that dribbling
in slime is staring back at me:
*slime-repl ...* buffer is a dribble :-)
Regarding org-babel:
I started using org's babel feature. It works very nicely with slime.
Actually, that is an
understatement. I love it!
For example, to set-up my analysis session, my org file has the
following snippet:
#+begin_src lisp :session
(in-package :cl-user)
(load-asdf-system :thermo)
(load-asdf-system :thermo-user)
(in-package :thermo-user)
#+end_src
One can edit the code in lisp mode by typing C-c ', and execute it by
typing C-c C-c.
Org-babel captures the lisp output into the file.
org-babel uses ob-lisp.el to set-up communication with slime.
I had to modify the following function in ob-lisp.el slightly to make
it more friendly.
See comments in the function below
(defun org-babel-execute:lisp (body params)
"Execute a block of Lisp code with org-babel.
This function is called by `org-babel-execute-src-block'"
(require 'slime)
(message "executing Lisp source code block")
(let* ((session (org-babel-lisp-initiate-session
(cdr (assoc :session params))))
(result-type (cdr (assoc :result-type params)))
;; enclose body into progn -- mv
(full-body (format "(progn\n%s)\n"
(org-babel-expand-body:lisp body params))))
(progn ;;read -- commented out by mv so as not to error on
unreadable return values
(if session
;; session evaluation
(save-window-excursion
(cadr (slime-eval `(swank:eval-and-grab-output ,full-body))))
;; external evaluation
(let ((script-file (org-babel-temp-file "lisp-script-")))
(with-temp-file script-file
(insert
;; return the value or the output
(if (string= result-type "value")
(format "(print %s)" full-body)
full-body)))
(org-babel-eval
(format "%s %s" org-babel-lisp-cmd
(org-babel-process-file-name script-file)) ""))))))
Mirko
More information about the slime-devel
mailing list