diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 4821cfa85..7933a49fd 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -13,6 +13,11 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org. * Version 9.3 ** Incompatible changes +*** ob-clojure will not auto prepend ~(ns ..)~ statement now +When tangling, user usually just want to tangle literally code instead +of prepend inserting a ~(ns ..)~ statement before source block +code. Now, when you have no ~:ns~ header argument specified, this +behavior will not happend automatically. *** Change in behavior on exit from an Org edit buffer Org will no longer attempt to restore the window configuration in the frame to which the user returns after editing a source block with diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el index 2088ab375..0e5642adb 100644 --- a/lisp/ob-clojure.el +++ b/lisp/ob-clojure.el @@ -63,7 +63,8 @@ (add-to-list 'org-babel-tangle-lang-exts '("clojure" . "clj")) (defvar org-babel-default-header-args:clojure '()) -(defvar org-babel-header-args:clojure '((package . :any))) +(defvar org-babel-header-args:clojure '((ns . :any) + (package . :any))) (defcustom org-babel-clojure-sync-nrepl-timeout 10 "Timeout value, in seconds, of a Clojure sync call. @@ -103,20 +104,19 @@ If the value is nil, timeout is disabled." (result-params (cdr (assq :result-params params))) (print-level nil) (print-length nil) - (body - (org-trim - (format "(ns %s)\n%s" - ;; Source block specified namespace :ns. - ns - ;; Variables binding. - (if (null vars) (org-trim body) - (format "(let [%s]\n%s)" - (mapconcat - (lambda (var) - (format "%S (quote %S)" (car var) (cdr var))) - vars - "\n ") - body)))))) + (body (org-trim + (concat + ;; Source block specified namespace :ns. + (and (cdr (assq :ns params)) (format "(ns %s)\n" ns)) + ;; Variables binding. + (if (null vars) (org-trim body) + (format "(let [%s]\n%s)" + (mapconcat + (lambda (var) + (format "%S (quote %S)" (car var) (cdr var))) + vars + "\n ") + body)))))) (if (or (member "code" result-params) (member "pp" result-params)) (format "(clojure.pprint/pprint (do %s))" body) diff --git a/testing/lisp/test-ob-clojure.el b/testing/lisp/test-ob-clojure.el index f917ca4cc..a5391dcb3 100644 --- a/testing/lisp/test-ob-clojure.el +++ b/testing/lisp/test-ob-clojure.el @@ -71,6 +71,20 @@ (should (string= ": 1" (buffer-substring-no-properties (point-at-bol) (point-at-eol)))))) +(ert-deftest ob-clojure/tangle-without-ns () + (org-test-with-temp-text + "#+begin_src clojure :tangle /tmp/test.clj +(print 1) +#+end_src" + (org-babel-next-src-block) + (org-babel-tangle) + (should + (string= + "(print 1) +" + (with-temp-buffer + (insert-file-contents "/tmp/test.clj") + (buffer-substring-no-properties (point-min) (point-max))))))) (provide 'test-ob-clojure)