aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/org/ob-clojure.el
diff options
context:
space:
mode:
authorCarsten Dominik2010-11-11 22:10:19 -0600
committerCarsten Dominik2010-11-11 22:10:19 -0600
commitafe98dfa700de5cf0493e8bf95b7d894e2734e47 (patch)
tree92a812b353bb09c1286e8a44fb552de9f1af3384 /lisp/org/ob-clojure.el
parentdf26e1f58a7e484b7ed500ea48d0e1c49345ffbf (diff)
downloademacs-afe98dfa700de5cf0493e8bf95b7d894e2734e47.tar.gz
emacs-afe98dfa700de5cf0493e8bf95b7d894e2734e47.zip
Install org-mode version 7.3
Diffstat (limited to 'lisp/org/ob-clojure.el')
-rw-r--r--lisp/org/ob-clojure.el72
1 files changed, 37 insertions, 35 deletions
diff --git a/lisp/org/ob-clojure.el b/lisp/org/ob-clojure.el
index c42d9b4db38..0a76e827125 100644
--- a/lisp/org/ob-clojure.el
+++ b/lisp/org/ob-clojure.el
@@ -5,7 +5,7 @@
5;; Author: Joel Boehland 5;; Author: Joel Boehland
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: http://orgmode.org
8;; Version: 7.01 8;; Version: 7.3
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
@@ -45,7 +45,6 @@
45(declare-function slime-eval-async "ext:slime" (sexp &optional cont package)) 45(declare-function slime-eval-async "ext:slime" (sexp &optional cont package))
46(declare-function slime-eval "ext:slime" (sexp &optional package)) 46(declare-function slime-eval "ext:slime" (sexp &optional package))
47(declare-function swank-clojure-concat-paths "ext:slime" (paths)) 47(declare-function swank-clojure-concat-paths "ext:slime" (paths))
48(declare-function org-babel-ref-variables "ext:slime" (params))
49(declare-function slime "ext:slime" (&optional command coding-system)) 48(declare-function slime "ext:slime" (&optional command coding-system))
50(declare-function slime-output-buffer "ext:slime" (&optional noprompt)) 49(declare-function slime-output-buffer "ext:slime" (&optional noprompt))
51(declare-function slime-filter-buffers "ext:slime" (predicate)) 50(declare-function slime-filter-buffers "ext:slime" (predicate))
@@ -92,28 +91,28 @@
92(defvar swank-clojure-extra-classpaths) 91(defvar swank-clojure-extra-classpaths)
93(defun org-babel-clojure-babel-clojure-cmd () 92(defun org-babel-clojure-babel-clojure-cmd ()
94 "Create the command to start clojure according to current settings." 93 "Create the command to start clojure according to current settings."
95 (if (and (not swank-clojure-binary) (not swank-clojure-classpath)) 94 (or (when swank-clojure-binary
95 (if (listp swank-clojure-binary)
96 swank-clojure-binary
97 (list swank-clojure-binary)))
98 (when swank-clojure-classpath
99 (delq
100 nil
101 (append
102 (list swank-clojure-java-path)
103 swank-clojure-extra-vm-args
104 (list
105 (when swank-clojure-library-paths
106 (concat "-Djava.library.path="
107 (swank-clojure-concat-paths swank-clojure-library-paths)))
108 "-classpath"
109 (swank-clojure-concat-paths
110 (append
111 swank-clojure-classpath
112 swank-clojure-extra-classpaths))
113 "clojure.main"))))
96 (error "%s" (concat "You must specifiy either a `swank-clojure-binary' " 114 (error "%s" (concat "You must specifiy either a `swank-clojure-binary' "
97 "or a `swank-clojure-jar-path'")) 115 "or a `swank-clojure-classpath'"))))
98 (if swank-clojure-binary
99 (if (listp swank-clojure-binary)
100 swank-clojure-binary
101 (list swank-clojure-binary))
102 (delq
103 nil
104 (append
105 (list swank-clojure-java-path)
106 swank-clojure-extra-vm-args
107 (list
108 (when swank-clojure-library-paths
109 (concat "-Djava.library.path="
110 (swank-clojure-concat-paths swank-clojure-library-paths)))
111 "-classpath"
112 (swank-clojure-concat-paths
113 (append
114 swank-clojure-classpath
115 swank-clojure-extra-classpaths))
116 "clojure.main"))))))
117 116
118(defun org-babel-clojure-table-or-string (results) 117(defun org-babel-clojure-table-or-string (results)
119 "Convert RESULTS to an elisp value. 118 "Convert RESULTS to an elisp value.
@@ -155,7 +154,7 @@ code specifying a variable of the same value."
155 "Prepare SESSION according to the header arguments specified in PARAMS." 154 "Prepare SESSION according to the header arguments specified in PARAMS."
156 (require 'slime) (require 'swank-clojure) 155 (require 'slime) (require 'swank-clojure)
157 (let* ((session-buf (org-babel-clojure-initiate-session session)) 156 (let* ((session-buf (org-babel-clojure-initiate-session session))
158 (vars (org-babel-ref-variables params)) 157 (vars (mapcar #'cdr (org-babel-get-header params :var)))
159 (var-lines (mapcar ;; define any top level session variables 158 (var-lines (mapcar ;; define any top level session variables
160 (lambda (pair) 159 (lambda (pair)
161 (format "(def %s %s)\n" (car pair) 160 (format "(def %s %s)\n" (car pair)
@@ -261,9 +260,13 @@ repl buffer."
261 " ")))) 260 " "))))
262 (case result-type 261 (case result-type
263 (output (org-babel-eval cmd body)) 262 (output (org-babel-eval cmd body))
264 (value (let* ((tmp-file (make-temp-file "org-babel-clojure-results-"))) 263 (value (let* ((tmp-file (org-babel-temp-file "clojure-")))
265 (org-babel-eval cmd (format org-babel-clojure-wrapper-method 264 (org-babel-eval
266 body tmp-file tmp-file)) 265 cmd
266 (format
267 org-babel-clojure-wrapper-method
268 body
269 (org-babel-process-file-name tmp-file 'noquote)))
267 (org-babel-clojure-table-or-string 270 (org-babel-clojure-table-or-string
268 (org-babel-eval-read-file tmp-file))))))) 271 (org-babel-eval-read-file tmp-file)))))))
269 272
@@ -290,24 +293,23 @@ return the value of the last statement in BODY as elisp."
290 (org-babel-clojure-evaluate-session buffer body result-type) 293 (org-babel-clojure-evaluate-session buffer body result-type)
291 (org-babel-clojure-evaluate-external-process buffer body result-type))) 294 (org-babel-clojure-evaluate-external-process buffer body result-type)))
292 295
293(defun org-babel-expand-body:clojure (body params &optional processed-params) 296(defun org-babel-expand-body:clojure (body params)
294 "Expand BODY according to PARAMS, return the expanded body." 297 "Expand BODY according to PARAMS, return the expanded body."
295 (org-babel-clojure-build-full-form 298 (org-babel-clojure-build-full-form
296 body (nth 1 (or processed-params (org-babel-process-params params))))) 299 body (mapcar #'cdr (org-babel-get-header params :var))))
297 300
298(defun org-babel-execute:clojure (body params) 301(defun org-babel-execute:clojure (body params)
299 "Execute a block of Clojure code." 302 "Execute a block of Clojure code."
300 (require 'slime) (require 'swank-clojure) 303 (require 'slime) (require 'swank-clojure)
301 (let* ((processed-params (org-babel-process-params params)) 304 (let* ((body (org-babel-expand-body:clojure body params))
302 (body (org-babel-expand-body:clojure body params processed-params))
303 (session (org-babel-clojure-initiate-session 305 (session (org-babel-clojure-initiate-session
304 (first processed-params)))) 306 (cdr (assoc :session params)))))
305 (org-babel-reassemble-table 307 (org-babel-reassemble-table
306 (org-babel-clojure-evaluate session body (nth 3 processed-params)) 308 (org-babel-clojure-evaluate session body (cdr (assoc :result-type params)))
307 (org-babel-pick-name 309 (org-babel-pick-name
308 (nth 4 processed-params) (cdr (assoc :colnames params))) 310 (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
309 (org-babel-pick-name 311 (org-babel-pick-name
310 (nth 5 processed-params) (cdr (assoc :rownames params)))))) 312 (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params))))))
311 313
312(provide 'ob-clojure) 314(provide 'ob-clojure)
313 315