From 3d8136837979a6cd8e7a3b74be2d5652b81d1e16 Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Tue, 21 Jun 2011 10:35:58 -0700 Subject: [PATCH] ob-clojure: respect the ":results scalar" header argument * lisp/ob-clojure.el (org-babel-expand-body:clojure): Move pretty printing out of body expansion. (org-babel-execute:clojure): Now holds pretty printing logic, and respects the ":results scalar" header argument --- lisp/ob-clojure.el | 63 ++++++++++++++++++++++++++++------------------------ 1 files changed, 34 insertions(+), 29 deletions(-) diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el index cc6c2de..35e3bd7 100644 --- a/lisp/ob-clojure.el +++ b/lisp/ob-clojure.el @@ -49,39 +49,44 @@ (defun org-babel-expand-body:clojure (body params) "Expand BODY according to PARAMS, return the expanded body." - (let* ((vars (mapcar #'cdr (org-babel-get-header params :var))) - (result-params (cdr (assoc :result-params params))) - (print-level nil) (print-length nil) - (body (org-babel-trim - (if (> (length vars) 0) - (concat "(let [" - (mapconcat - (lambda (var) - (format "%S (quote %S)" (car var) (cdr var))) - vars "\n ") - "]\n" body ")") - body)))) - (if (or (member "code" result-params) - (member "pp" result-params)) - (format - (concat - "(let [org-mode-print-catcher (java.io.StringWriter.)] " - "(clojure.pprint/with-pprint-dispatch clojure.pprint/%s-dispatch " - "(clojure.pprint/pprint (do %s) org-mode-print-catcher) " - "(str org-mode-print-catcher)))") - (if (member "code" result-params) "code" "simple") body) - body))) + (let ((vars (mapcar #'cdr (org-babel-get-header params :var))) + (print-level nil) (print-length nil)) + (org-babel-trim + (if (> (length vars) 0) + (concat "(let [" + (mapconcat + (lambda (var) + (format "%S (quote %S)" (car var) (cdr var))) + vars "\n ") + "]\n" body ")") + body)))) (defun org-babel-execute:clojure (body params) "Execute a block of Clojure code with Babel." (require 'slime) (require 'swank-clojure) - (with-temp-buffer - (insert (org-babel-expand-body:clojure body params)) - ((lambda (result) (condition-case nil (read result) (error result))) - (slime-eval - `(swank:interactive-eval-region - ,(buffer-substring-no-properties (point-min) (point-max))) - (cdr (assoc :package params)))))) + (let ((result-params (cdr (assoc :result-params params))) + (body (org-babel-expand-body:clojure body params))) + (with-temp-buffer + (insert + (if (or (member "code" result-params) + (member "pp" result-params)) + (format + (concat + "(let [org-mode-print-catcher (java.io.StringWriter.)] " + "(clojure.pprint/with-pprint-dispatch clojure.pprint/%s-dispatch " + "(clojure.pprint/pprint (do %s) org-mode-print-catcher) " + "(str org-mode-print-catcher)))") + (if (member "code" result-params) "code" "simple") body) + body)) + ((lambda (result) + (if (or (member "scalar" result-params) + (member "verbatim" result-params)) + result + (condition-case nil (read result) (error result)))) + (slime-eval + `(swank:interactive-eval-region + ,(buffer-substring-no-properties (point-min) (point-max))) + (cdr (assoc :package params))))))) (provide 'ob-clojure) -- 1.7.4.1