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 clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to