;;; ob-clojure.el --- org-babel functions for clojure evaluation ;; Copyright (C) 2009-2013 Free Software Foundation, Inc. ;; Author: Oleh Krehel ;; Keywords: literate programming, reproducible research ;; Homepage: http://orgmode.org ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . ;;; Commentary: ;;; support for evaluating clojure code, relies on nrepl for eval ;;; Requirements: ;;; - clojure ;;; - clojure-mode ;;; - nrepl ;;; Best way to get clojure is with https://github.com/technomancy/leiningen ;;; Best way to get nrepl is from MELPA (clojure-mode is a dependency). ;;; Code: (require 'ob) (require 'ob-tangle) (defvar org-babel-tangle-lang-exts) (add-to-list 'org-babel-tangle-lang-exts '("clojure" . "clj")) (defvar org-babel-default-header-args:clojure '((:results . "value") (:tangle . "yes"))) (defun org-babel-execute:clojure (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."))) (provide 'ob-clojure-nrepl) ;;; ob-clojure-nrepl.el ends here