mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-24 07:20:29 +00:00
ob-clojure: Don't tangle with auto prepend ns statement
* lisp/ob-clojure.el: (org-babel-expand-body:clojure, org-babel-header-args:clojure): whether auto prepend Clojure (ns ..) statement depend on whether have :ns header argument specified. * testing/test-ob-clojure.el: Add a test.
This commit is contained in:
parent
4a076ed545
commit
bcdb2b5568
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user