|
@@ -36,6 +36,8 @@
|
|
|
;; For clojure-mode, see https://github.com/clojure-emacs/clojure-mode
|
|
|
;; For cider, see https://github.com/clojure-emacs/cider
|
|
|
;; For inf-clojure, see https://github.com/clojure-emacs/cider
|
|
|
+;; For babashka, see https://github.com/babashka/babashka
|
|
|
+;; For nbb, see https://github.com/babashka/nbb
|
|
|
|
|
|
;; For SLIME, the best way to install these components is by following
|
|
|
;; the directions as set out by Phil Hagelberg (Technomancy) on the
|
|
@@ -77,6 +79,8 @@
|
|
|
(const :tag "inf-clojure" inf-clojure)
|
|
|
(const :tag "cider" cider)
|
|
|
(const :tag "slime" slime)
|
|
|
+ (const :tag "babashka" babashka)
|
|
|
+ (const :tag "nbb" nbb)
|
|
|
(const :tag "Not configured yet" nil)))
|
|
|
|
|
|
(defcustom org-babel-clojure-default-ns "user"
|
|
@@ -84,6 +88,16 @@
|
|
|
:type 'string
|
|
|
:group 'org-babel)
|
|
|
|
|
|
+(defcustom ob-clojure-babashka-command (executable-find "bb")
|
|
|
+ "Path to the babashka executable."
|
|
|
+ :type 'file
|
|
|
+ :group 'org-babel)
|
|
|
+
|
|
|
+(defcustom ob-clojure-nbb-command (executable-find "nbb")
|
|
|
+ "Path to the nbb executable."
|
|
|
+ :type 'file
|
|
|
+ :group 'org-babel)
|
|
|
+
|
|
|
(defun org-babel-expand-body:clojure (body params)
|
|
|
"Expand BODY according to PARAMS, return the expanded body."
|
|
|
(let* ((vars (org-babel--get-vars params))
|
|
@@ -229,6 +243,15 @@
|
|
|
,(buffer-substring-no-properties (point-min) (point-max)))
|
|
|
(cdr (assq :package params)))))
|
|
|
|
|
|
+(defun ob-clojure-eval-with-babashka (bb expanded)
|
|
|
+ "Evaluate EXPANDED code block using BB (babashka or nbb)."
|
|
|
+ (let ((script-file (org-babel-temp-file "clojure-bb-script-" ".clj")))
|
|
|
+ (with-temp-file script-file
|
|
|
+ (insert expanded))
|
|
|
+ (org-babel-eval
|
|
|
+ (format "%s %s" bb (org-babel-process-file-name script-file))
|
|
|
+ "")))
|
|
|
+
|
|
|
(defun org-babel-execute:clojure (body params)
|
|
|
"Execute a block of Clojure code with Babel."
|
|
|
(unless org-babel-clojure-backend
|
|
@@ -240,6 +263,10 @@
|
|
|
(cond
|
|
|
((eq org-babel-clojure-backend 'inf-clojure)
|
|
|
(ob-clojure-eval-with-inf-clojure expanded params))
|
|
|
+ ((eq org-babel-clojure-backend 'babashka)
|
|
|
+ (ob-clojure-eval-with-babashka ob-clojure-babashka-command expanded))
|
|
|
+ ((eq org-babel-clojure-backend 'nbb)
|
|
|
+ (ob-clojure-eval-with-babashka ob-clojure-nbb-command expanded))
|
|
|
((eq org-babel-clojure-backend 'cider)
|
|
|
(ob-clojure-eval-with-cider expanded params))
|
|
|
((eq org-babel-clojure-backend 'slime)
|