X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/70c2e72ae5368e39277de78a414c9d42292886c5..50ccef4f27a9749ec07fe137ded8ec68bba6ca4e:/lisp/org/ob-clojure.el diff --git a/lisp/org/ob-clojure.el b/lisp/org/ob-clojure.el index d9bc213dfa..78f3c6d315 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, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. -;; Author: Joel Boehland, Eric Schulte +;; Author: Joel Boehland +;; Eric Schulte ;; Keywords: literate programming, reproducible research ;; Homepage: http://orgmode.org -;; Version: 7.7 ;; This file is part of GNU Emacs. @@ -24,18 +24,17 @@ ;;; Commentary: -;;; support for evaluating clojure code, relies on slime for all eval +;; Support for evaluating clojure code, relies on slime for all eval. ;;; Requirements: -;;; - clojure (at least 1.2.0) -;;; - clojure-mode -;;; - slime -;;; - swank-clojure +;; - clojure (at least 1.2.0) +;; - clojure-mode +;; - slime -;;; 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 +;; 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 ;;; Code: (require 'ob) @@ -46,7 +45,7 @@ (add-to-list 'org-babel-tangle-lang-exts '("clojure" . "clj")) (defvar org-babel-default-header-args:clojure '()) -(defvar org-babel-header-arg-names:clojure '(package)) +(defvar org-babel-header-args:clojure '((package . :any))) (defun org-babel-expand-body:clojure (body params) "Expand BODY according to PARAMS, return the expanded body." @@ -75,23 +74,22 @@ (defun org-babel-execute:clojure (body params) "Execute a block of Clojure code with Babel." - (require 'slime) (require 'swank-clojure) + (require 'slime) (with-temp-buffer (insert (org-babel-expand-body:clojure body params)) - ((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))) - (cdr (assoc :package params)))))) + (let ((result + (slime-eval + `(swank:eval-and-grab-output + ,(buffer-substring-no-properties (point-min) (point-max))) + (cdr (assoc :package params))))) + (let ((result-params (cdr (assoc :result-params params)))) + (org-babel-result-cond result-params + result + (condition-case nil (org-babel-script-escape result) + (error result))))))) (provide 'ob-clojure) -;; arch-tag: a43b33f2-653e-46b1-ac56-2805cf05b7d1 + ;;; ob-clojure.el ends here