Hi Eric, I can make the changes tomorrow. Or you can make them now if you like. I required ob-tangle because it's a pre-requisite for ob-clojure: an error is thrown if I try to load ob-clojure before ob-tangle. So it makes sense to me to require it. regards, Oleh On Thu, Oct 3, 2013 at 8:06 PM, Eric Schulte wrote: > Thanks for this update. > > Oleh 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 wrote: > > > >> Hi Oleh, > >> > >> Oleh 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 > > 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 >