Trying to use org mode with clojure. I'd like to use cider as the REPL
server.
Things is fine if I have only one statement in org source block. If I have
more than one, then I got exception.
for example
#+name: basic-clojure
#+begin_src clojure
(defn greeting
"Returns a greeting of the form 'Hello, username.'"
[username]
(str "Hello, " username))
#+end_src
will be fine. But
#+name: basic-clojure
#+begin_src clojure
(defn greeting
"Returns a greeting of the form 'Hello, username.'"
[username]
(str "Hello, " username))
*(greeting "Tom")*
#+end_src
will throw exception:
java.lang.ClassCastException: java.lang.String cannot be cast to
java.io.Writer
column_writer.clj:78 clojure.pprint/column-writer[fn]
(Unknown Source)
clojure.pprint.proxy$java.io.Writer$IDeref$db53459f.write
(Unknown Source)
sun.reflect.GeneratedMethodAccessor9.invoke
DelegatingMethodAccessorImpl.java:25
sun.reflect.DelegatingMethodAccessorImpl.invoke
Method.java:597 java.lang.reflect.Method.invoke
Reflector.java:93
clojure.lang.Reflector.invokeMatchingMethod
Reflector.java:28
clojure.lang.Reflector.invokeInstanceMethod
pretty_writer.clj:443 clojure.pprint/start-block[fn]
AFn.java:18 clojure.lang.AFn.call
LockingTransaction.java:263 clojure.lang.LockingTransaction.run
LockingTransaction.java:231
clojure.lang.LockingTransaction.runInTransaction
pretty_writer.clj:433 clojure.pprint/start-block
Var.java:427 clojure.lang.Var.invoke
dispatch.clj:130 clojure.pprint/pprint-ideref[fn]
dispatch.clj:130 clojure.pprint/pprint-ideref
MultiFn.java:227 clojure.lang.MultiFn.invoke
pprint_base.clj:194 clojure.pprint/write-out
pprint_base.clj:250 clojure.pprint/pprint[fn]
pprint_base.clj:248 clojure.pprint/pprint
NO_SOURCE_FILE:5 user/eval611
Compiler.java:6619 clojure.lang.Compiler.eval
Compiler.java:6582 clojure.lang.Compiler.eval
core.clj:2852 clojure.core/eval
main.clj:259 clojure.main/repl[fn]
main.clj:259 clojure.main/repl[fn]
main.clj:277 clojure.main/repl[fn]
main.clj:277 clojure.main/repl
RestFn.java:1096 clojure.lang.RestFn.invoke
interruptible_eval.clj:56
clojure.tools.nrepl.middleware.interruptible-eval/evaluate[fn]
AFn.java:159 clojure.lang.AFn.applyToHelper
AFn.java:151 clojure.lang.AFn.applyTo
core.clj:617 clojure.core/apply
core.clj:1788 clojure.core/with-bindings*
RestFn.java:425 clojure.lang.RestFn.invoke
interruptible_eval.clj:41
clojure.tools.nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj:171
clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval[fn]
core.clj:2330 clojure.core/comp[fn]
interruptible_eval.clj:138
clojure.tools.nrepl.middleware.interruptible-eval/run-next[fn]
AFn.java:24 clojure.lang.AFn.run
ThreadPoolExecutor.java:886
java.util.concurrent.ThreadPoolExecutor$Worker.runTask
ThreadPoolExecutor.java:908
java.util.concurrent.ThreadPoolExecutor$Worker.run
Thread.java:662 java.lang.Thread.run
Digging into ob-clojure.el and I was able to reproduce it in Emacs as:
(defvar expanded "")
(setq expanded "(clojure.pprint/pprint (defn greeting
\"Returns a greeting of the form 'Hello, username.'\"
[username]
(str \"Hello, \" username))
(greeting \"Tom\"))")
(nrepl-send-string-sync
expanded
(cider-current-ns)
(nrepl-current-tooling-session))
Any suggestions on fixing this or it is by design ob-clojure only evaluate
one statement?
Thanks.
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.