diff options
author | Bastien Guerry <bastien1@free.fr> | 2011-07-28 17:13:49 +0200 |
---|---|---|
committer | Bastien Guerry <bastien1@free.fr> | 2011-07-28 17:13:49 +0200 |
commit | 3ab2c837b302b01fff610f7b83050ab7e703477c (patch) | |
tree | efa67ed523bbda4d41488ae6b9ad2782941ddcf2 /lisp/org/ob-clojure.el | |
parent | 44a8054f971837447e80d618b6e0c2a77778a2ee (diff) | |
download | emacs-3ab2c837b302b01fff610f7b83050ab7e703477c.tar.gz |
Merge changes from Org 7.4 to current Org 7.7.
Diffstat (limited to 'lisp/org/ob-clojure.el')
-rw-r--r-- | lisp/org/ob-clojure.el | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/lisp/org/ob-clojure.el b/lisp/org/ob-clojure.el index f9087e8358e..d9bc213dfa2 100644 --- a/lisp/org/ob-clojure.el +++ b/lisp/org/ob-clojure.el @@ -1,11 +1,11 @@ ;;; ob-clojure.el --- org-babel functions for clojure evaluation -;; Copyright (C) 2009-2011 Free Software Foundation, Inc. +;; Copyright (C) 2009, 2010 Free Software Foundation, Inc. ;; Author: Joel Boehland, Eric Schulte ;; Keywords: literate programming, reproducible research ;; Homepage: http://orgmode.org -;; Version: 7.4 +;; Version: 7.7 ;; This file is part of GNU Emacs. @@ -42,6 +42,7 @@ (declare-function slime-eval "ext:slime" (sexp &optional package)) +(defvar org-babel-tangle-lang-exts) (add-to-list 'org-babel-tangle-lang-exts '("clojure" . "clj")) (defvar org-babel-default-header-args:clojure '()) @@ -61,27 +62,36 @@ 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 %s-dispatch" - "(clojure.pprint/pprint %s org-mode-print-catcher)" - "(str org-mode-print-catcher)))") - (if (member "code" result-params) "code" "simple") body) - body))) + (cond ((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)) + ;; if (:results output), collect printed output + ((member "output" result-params) + (format "(clojure.core/with-out-str %s)" body)) + (t 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)) - (read + ((lambda (result) + (let ((result-params (cdr (assoc :result-params params)))) + (if (or (member "scalar" result-params) + (member "verbatim" result-params)) + result + (condition-case nil (org-babel-script-escape result) + (error result))))) (slime-eval `(swank:interactive-eval-region - ,(buffer-substring-no-properties (point-min) (point-max))) + ,(buffer-substring-no-properties (point-min) (point-max))) (cdr (assoc :package params)))))) (provide 'ob-clojure) +;; arch-tag: a43b33f2-653e-46b1-ac56-2805cf05b7d1 ;;; ob-clojure.el ends here |