Thanks for this update. Oleh <ohwoeo...@gmail.com> writes:
> Here's an updated patch. > I use defalias, is that OK? > Two changes. 1. instead of customization through a defalias, use defcustom and a variable which determines which function (eval-slime or eval-nrepl) is called. 2. ob-*.el files should not require ob-tangle. If you prefer not to make these changes I can apply your patch, and then make the required changes myself over-top. Best, > > Oleh > > > On Thu, Oct 3, 2013 at 6:23 PM, Bastien <b...@gnu.org> wrote: > >> Hi Oleh, >> >> Oleh <ohwoeo...@gmail.com> writes: >> >> > Should I rather put the code in ob-clojure.el with something like >> > (defcustom ob-clojure-method nrepl)? >> >> Yes, I think it's better. Maybe >> >> (defcustom ob-clojure-repl 'nrepl) >> >> Let's discuss this on the list so that others can chime in. >> >> Thanks for bringing this up! >> >> -- >> Bastien >> > > From ab5c9a8844b4103e40cd4c135f297a7089cd7cdf Mon Sep 17 00:00:00 2001 > From: Oleh Krehel <ohwoeo...@gmail.com> > Date: Thu, 3 Oct 2013 18:23:16 +0200 > Subject: [PATCH] ob-clojure.el: switch to nREPL as the main method of > evaluating Clojure. > > Get the old behavior with: > (defalias 'org-babel-execute:clojure 'org-babel--execute-clojure-slime) > --- > lisp/ob-clojure.el | 34 ++++++++++++++++++++++++++-------- > 1 file changed, 26 insertions(+), 8 deletions(-) > > diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el > index bc2bbc0..3b82f0a 100644 > --- a/lisp/ob-clojure.el > +++ b/lisp/ob-clojure.el > @@ -2,8 +2,8 @@ > > ;; Copyright (C) 2009-2013 Free Software Foundation, Inc. > > -;; Author: Joel Boehland > -;; Eric Schulte > +;; Author: Joel Boehland, Eric Schulte, Oleh Krehel > +;; > ;; Keywords: literate programming, reproducible research > ;; Homepage: http://orgmode.org > > @@ -24,20 +24,26 @@ > > ;;; Commentary: > > -;;; support for evaluating clojure code, relies on slime for all eval > +;;; support for evaluating clojure code, relies either on slime or > +;;; on nrepl for all eval > > ;;; Requirements: > > ;;; - clojure (at least 1.2.0) > ;;; - clojure-mode > -;;; - slime > +;;; - either slime or nrepl > > -;;; By far, the best way to install these components is by following > -;;; the directions as set out by Phil Hagelberg (Technomancy) on the > -;;; web page: http://technomancy.us/126 > +;;; For SLIME-way, the best way to install these components is by > +;;; following the directions as set out by Phil Hagelberg (Technomancy) > +;;; on the web page: http://technomancy.us/126 > + > +;;; For nREPL-way: > +;;; get clojure is with https://github.com/technomancy/leiningen > +;;; get nrepl from MELPA (clojure-mode is a dependency). > > ;;; Code: > (require 'ob) > +(require 'ob-tangle) > > (declare-function slime-eval "ext:slime" (sexp &optional package)) > > @@ -72,7 +78,7 @@ > (format "(clojure.core/with-out-str %s)" body)) > (t body)))) > > -(defun org-babel-execute:clojure (body params) > +(defun org-babel--execute-clojure-slime (body params) > "Execute a block of Clojure code with Babel." > (require 'slime) > (with-temp-buffer > @@ -88,6 +94,18 @@ > ,(buffer-substring-no-properties (point-min) (point-max))) > (cdr (assoc :package params)))))) > > +(defun org-babel--execute-clojure-nrepl (body params) > + "Execute a block of Clojure code with Babel and nREPL." > + (require 'nrepl) > + (if (nrepl-current-connection-buffer) > + (let* ((result (nrepl-eval body)) > + (s (plist-get result :stdout)) > + (r (plist-get result :value))) > + (if s (concat s "\n" r) r)) > + (error "nREPL not connected! Use M-x nrepl-jack-in."))) > + > +(defalias 'org-babel-execute:clojure 'org-babel--execute-clojure-nrepl) > + > (provide 'ob-clojure) -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D