|
68 | 68 | (add-to-list 'org-babel-tangle-lang-exts '("clojurescript" . "cljs")) |
69 | 69 |
|
70 | 70 | (defvar org-babel-default-header-args:clojure '()) |
71 | | -(defvar org-babel-header-args:clojure '((ns . :any) (package . :any))) |
| 71 | +(defvar org-babel-header-args:clojure |
| 72 | + '((ns . :any) |
| 73 | + (package . :any) |
| 74 | + (backend . ((inf-clojure cider slime babashka nbb))))) |
72 | 75 | (defvar org-babel-default-header-args:clojurescript '()) |
73 | 76 | (defvar org-babel-header-args:clojurescript '((package . :any))) |
74 | 77 |
|
|
253 | 256 | ""))) |
254 | 257 |
|
255 | 258 | (defun org-babel-execute:clojure (body params) |
256 | | - "Execute a block of Clojure code with Babel." |
257 | | - (unless org-babel-clojure-backend |
258 | | - (user-error "You need to customize org-babel-clojure-backend")) |
259 | | - (let* ((expanded (org-babel-expand-body:clojure body params)) |
260 | | - (result-params (cdr (assq :result-params params))) |
261 | | - result) |
262 | | - (setq result |
263 | | - (cond |
264 | | - ((eq org-babel-clojure-backend 'inf-clojure) |
265 | | - (ob-clojure-eval-with-inf-clojure expanded params)) |
266 | | - ((eq org-babel-clojure-backend 'babashka) |
267 | | - (ob-clojure-eval-with-babashka ob-clojure-babashka-command expanded)) |
268 | | - ((eq org-babel-clojure-backend 'nbb) |
269 | | - (ob-clojure-eval-with-babashka ob-clojure-nbb-command expanded)) |
270 | | - ((eq org-babel-clojure-backend 'cider) |
271 | | - (ob-clojure-eval-with-cider expanded params)) |
272 | | - ((eq org-babel-clojure-backend 'slime) |
273 | | - (ob-clojure-eval-with-slime expanded params)))) |
274 | | - (org-babel-result-cond result-params |
275 | | - result |
276 | | - (condition-case nil (org-babel-script-escape result) |
277 | | - (error result))))) |
| 259 | + "Execute the BODY block of Clojure code with PARAMS using Babel." |
| 260 | + (let* ((backend-override (cdr (assq :backend params))) |
| 261 | + (org-babel-clojure-backend |
| 262 | + (cond |
| 263 | + (backend-override (intern backend-override)) |
| 264 | + (org-babel-clojure-backend org-babel-clojure-backend) |
| 265 | + (t (user-error "You need to customize `org-babel-clojure-backend' |
| 266 | +or set the `:backend' header argument"))))) |
| 267 | + (let* ((expanded (org-babel-expand-body:clojure body params)) |
| 268 | + (result-params (cdr (assq :result-params params))) |
| 269 | + result) |
| 270 | + (setq result |
| 271 | + (cond |
| 272 | + ((eq org-babel-clojure-backend 'inf-clojure) |
| 273 | + (ob-clojure-eval-with-inf-clojure expanded params)) |
| 274 | + ((eq org-babel-clojure-backend 'babashka) |
| 275 | + (ob-clojure-eval-with-babashka ob-clojure-babashka-command expanded)) |
| 276 | + ((eq org-babel-clojure-backend 'nbb) |
| 277 | + (ob-clojure-eval-with-babashka ob-clojure-nbb-command expanded)) |
| 278 | + ((eq org-babel-clojure-backend 'cider) |
| 279 | + (ob-clojure-eval-with-cider expanded params)) |
| 280 | + ((eq org-babel-clojure-backend 'slime) |
| 281 | + (ob-clojure-eval-with-slime expanded params)))) |
| 282 | + (org-babel-result-cond result-params |
| 283 | + result |
| 284 | + (condition-case nil (org-babel-script-escape result) |
| 285 | + (error result)))))) |
278 | 286 |
|
279 | 287 | (defun org-babel-execute:clojurescript (body params) |
280 | 288 | "Evaluate BODY with PARAMS as ClojureScript code." |
|
0 commit comments