From mboxrd@z Thu Jan 1 00:00:00 1970 From: "numbchild@gmail.com" Subject: Re: ob-clojure evaluate error when Org-mode buffer has ns clojure code Date: Sat, 17 Jun 2017 20:57:47 +0800 Message-ID: References: <87zid7bd46.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="001a1144e55ca91fff0552277405" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42989) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dMDJ0-0001PM-P9 for emacs-orgmode@gnu.org; Sat, 17 Jun 2017 08:58:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dMDIx-00051M-Vd for emacs-orgmode@gnu.org; Sat, 17 Jun 2017 08:58:22 -0400 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:38563) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dMDIx-0004zY-GE for emacs-orgmode@gnu.org; Sat, 17 Jun 2017 08:58:19 -0400 Received: by mail-wm0-x233.google.com with SMTP id u195so29784370wmd.1 for ; Sat, 17 Jun 2017 05:58:19 -0700 (PDT) In-Reply-To: <87zid7bd46.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Tim Cross Cc: Org-mode --001a1144e55ca91fff0552277405 Content-Type: text/plain; charset="UTF-8" I did configure `ob-clojure` with the following settings: ```elisp (require 'ob-clojure) ;; use CIDER as the Clojure execution backend (setq org-babel-clojure-backend 'cider) ;; Useful keybindings when using Clojure from Org ;; (org-defkey org-mode-map (kbd "C-x C-e") 'cider-eval-last-sexp) ;; (org-defkey org-mode-map (kbd "C-c C-d") 'cider-doc) ;; No timeout when executing calls on Cider via nrepl ;; (setq org-babel-clojure-sync-nrepl-timeout nil) ;; let `ob-clojure' babel src blocks allow evaluation. (add-to-list 'org-babel-default-header-args:clojure '(:eval . "yes")) (add-to-list 'org-babel-default-header-args:clojure '(:results . "output")) ;; (add-to-list 'org-babel-default-header-args:clojure ;; '(:show-process . t)) ``` I start CIDER REPL session with `cider-jack-in` without project in Emacs. I changed namespace to `user` in src blocks like this: ```org #+BEGIN_SRC clojure (ns user (:require '[incanter.core :as kk])) #+END_SRC #+RESULTS: #+BEGIN_SRC clojure :session :results output (print "hi") (def kkkk "hello") #+END_SRC #+RESULTS: : hi ``` Then it works. Seems you're right, might my first src block can't work correctly. That caused second src block evaluation failed. But I require `incanter` works, I have `incanter` in Leiningen dependencies. ```clojure (require '[incanter.core :as kk]) ``` But include `incanter` in namespace failed: ```clojure (ns user (:require '[incanter.core :as kk])) ``` with the following error. ``` Show: Clojure Java REPL Tooling Duplicates All (29 frames hidden) 2. Unhandled clojure.lang.Compiler$CompilerException Error compiling Code/learning/Emacs/Org-mode/ob-clojure.org at (1:1) core.clj: 5771 clojure.core/throw-if core.clj: 5835 clojure.core/load-lib core.clj: 5832 clojure.core/load-lib RestFn.java: 142 clojure.lang.RestFn/applyTo core.clj: 659 clojure.core/apply core.clj: 5893 clojure.core/load-libs core.clj: 5873 clojure.core/load-libs RestFn.java: 137 clojure.lang.RestFn/applyTo core.clj: 659 clojure.core/apply core.clj: 5911 clojure.core/require core.clj: 5911 clojure.core/require RestFn.java: 408 clojure.lang.RestFn/invoke REPL: 1 user/eval46259/loading--auto-- REPL: 1 user/eval46259 REPL: 1 user/eval46259 Compiler.java: 6977 clojure.lang.Compiler/eval Compiler.java: 6966 clojure.lang.Compiler/eval Compiler.java: 6940 clojure.lang.Compiler/eval core.clj: 3187 clojure.core/eval core.clj: 3183 clojure.core/eval main.clj: 242 clojure.main/repl/read-eval-print/fn main.clj: 242 clojure.main/repl/read-eval-print main.clj: 260 clojure.main/repl/fn main.clj: 260 clojure.main/repl main.clj: 176 clojure.main/repl RestFn.java: 1523 clojure.lang.RestFn/invoke interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn AFn.java: 152 clojure.lang.AFn/applyToHelper AFn.java: 144 clojure.lang.AFn/applyTo core.clj: 657 clojure.core/apply core.clj: 1963 clojure.core/with-bindings* core.clj: 1963 clojure.core/with-bindings* RestFn.java: 425 clojure.lang.RestFn/invoke interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 55 clojure.tools.nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn AFn.java: 22 clojure.lang.AFn/run ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run Thread.java: 745 java.lang.Thread/run 1. Caused by java.lang.Exception Found lib name 'incanter.stats' containing period with prefix 'quote'. lib names inside prefix lists must not contain periods core.clj: 659 clojure.core/apply core.clj: 5893 clojure.core/load-libs core.clj: 5873 clojure.core/load-libs RestFn.java: 137 clojure.lang.RestFn/applyTo core.clj: 659 clojure.core/apply core.clj: 5911 clojure.core/require core.clj: 5911 clojure.core/require RestFn.java: 408 clojure.lang.RestFn/invoke REPL: 1 user/eval46259/loading--auto-- REPL: 1 user/eval46259 REPL: 1 user/eval46259 Compiler.java: 6977 clojure.lang.Compiler/eval Compiler.java: 6966 clojure.lang.Compiler/eval Compiler.java: 6940 clojure.lang.Compiler/eval core.clj: 3187 clojure.core/eval core.clj: 3183 clojure.core/eval main.clj: 242 clojure.main/repl/read-eval-print/fn main.clj: 242 clojure.main/repl/read-eval-print main.clj: 260 clojure.main/repl/fn main.clj: 260 clojure.main/repl main.clj: 176 clojure.main/repl RestFn.java: 1523 clojure.lang.RestFn/invoke interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn AFn.java: 152 clojure.lang.AFn/applyToHelper AFn.java: 144 clojure.lang.AFn/applyTo core.clj: 657 clojure.core/apply core.clj: 1963 clojure.core/with-bindings* core.clj: 1963 clojure.core/with-bindings* RestFn.java: 425 clojure.lang.RestFn/invoke interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 55 clojure.tools.nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn AFn.java: 22 clojure.lang.AFn/run ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run Thread.java: 745 java.lang.Thread/run ``` [stardiviner] GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ On Sat, Jun 17, 2017 at 9:46 AM, Tim Cross wrote: > > My guess is that cider is not finding the incanter package in the > classpath when the first block attempts to evaluate. Another issue is > that your not using any session options, so your two blocks will be > evaluated in separate environments - not a real problem with your > current example, but will be an issue if you expect to access incanter > functions from separate babel blocks. > > There are a number of working parts which all need to be lined up > correctly before babel clojure support will work correctly. Getting > things to work when your just using core clojure functions is fairly > trivial, but getting it to work when you have to pull in other > dependencies can be a little tricky. > > You might find this article useful to get started > > http://fgiasson.com/blog/index.php/2016/06/21/optimal- > emacs-settings-for-org-mode-for-literate-programming/ > > I also notice you have not set the org-babel-clojure-backend, which you > need to do. My recommendation would be to do the following > > 1. Create a leinegen project to experiment with i.e. > lein new app my-kk > > 2. Make sure you can edit and evaluate clojure just using clojure-mode > and cider in emacs > > 3. Add the incanter package to your project.clj dependencies key > > 4. Modify core.clj (using clojure-mode) to include the code in your > clojure blocks and run with cider to make sure they work as expected. > > 5. Create the org file you want to experiment with in the root of your > project. This should ensure that when you try to evaluate clojure > blocks, the cider backend will be loaded with the dependencies in the > project.clj file. > > 6. Copy the code in your core.clj file into ONE babel src block and see > if you can get it to evaluate correctly. Experiment with the block > configuration options like :output etc. > > 7. Break the code up into different blocks and experiment with block > options, especially session options. > > Once you get to that point, you should be across the various moving > parts with sufficient understanding to then look at how you can tweak > things to get exactly the behaviour and workflow you want. > > HTH > > Tim > > numbchild@gmail.com writes: > > > When Org-mode buffer like this: > > > > #+BEGIN_SRC clojure > > (ns my.kk > > (:require '[incanter.core :as kk])) > > #+END_SRC > > > > #+BEGIN_SRC clojure > > (print "hi") > > (def kkkk "hello") > > #+END_SRC > > > > #+RESULTS: > > > > When I have `(ns ..)` namespace clojure code in buffer, the second > `(print > > ..)` clojure result nothing. But when I remove the first src block, the > > `(print ..)` clojure src block works fine. > > > > I'm using Org-mode version from `master` with `use-package` like this: > > > > (use-package org > > :load-path "~/Code/Emacs/org-mode/lisp/" > > :pin manual > > :mode (("\\.org$" . org-mode)) > > :config > > (use-package org-plus-contrib > > :load-path "~/Code/Emacs/org-mode/contrib/lisp/" > > :pin manual) > > ) > > > > > > [stardiviner] GPG key ID: 47C32433 > > IRC(freeenode): stardiviner Twitter: @numbchild > > Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 > > Blog: http://stardiviner.github.io/ > > > -- > Tim Cross > --001a1144e55ca91fff0552277405 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I did configure `ob-clojure` with the followin= g settings:

```elisp
(require 'ob-clojure)

;; use CIDER as = the Clojure execution backend
(setq org-babel-clojure-backend 'ci= der)

;; Useful keybindings when using Clojure from Org
;; (org-defkey org-mode-map (kbd "C-x C-e") 'cider-eval-la= st-sexp)
;; (org-defkey org-mode-map (kbd "C-c C-d") 'c= ider-doc)

;; No timeout when executing calls on Cider via = nrepl
;; (setq org-babel-clojure-sync-nrepl-timeout nil)
=

;; let `ob-clojure' babel src blocks allow evaluation.
(add-= to-list 'org-babel-default-header-args:clojure
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'(:eval . "yes"))
(ad= d-to-list 'org-babel-default-header-args:clojure
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'(:results . "output"))
;; (add-to-list 'org-babel-default-header-args:clojure
<= div class=3D"gmail_default">;; =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'(:show-process . t))
```<= /div>

I start C= IDER REPL session with `cider-jack-in` without project in Emacs.

I changed namespace= to `user` in src blocks like this:

```org
#+BEGIN_SRC clojure
(ns user
=C2=A0 (:require '[incanter.core :as kk]))
#+END_SRC

#+RESULTS:

#+B= EGIN_SRC clojure :session :results output
(print "hi")
(def kkkk "hello")
#+END_SRC

#+RESULTS:
: hi
```

Then it works.

Seems you're right, might my first src block c= an't work correctly. That caused second src block evaluation failed.

But I requi= re `incanter` works, I have `incanter` in Leiningen dependencies.
```clojure
=
(require '[incanter.core := as kk])
```

But include `incanter` in namespace failed:
```clojure
(ns user
=C2=A0 (:require = 9;[incanter.core :as kk]))
```
with the following error.
```
=C2=A0 Show: Clojure Java REPL Tooling Duplicates All = =C2=A0(29 frames hidden)

2. Unh= andled clojure.lang.Compiler$CompilerException
=C2=A0 =C2=A0Error compiling Code/learning/Em= acs/Org-mode/ob-clojure.org at (1:1)<= /font>

<= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5771 =C2=A0clojure.core/throw-if<= /font>
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5835 =C2=A0clojure.= core/load-lib
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5832 = =C2=A0clojure.core/load-lib
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RestFn.jav= a: =C2=A0142 =C2=A0clojure.lang.RestFn/applyTo
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 core.clj: =C2=A0659 =C2=A0clojure.core/apply
=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5893 =C2=A0clojure.core/load-l= ibs
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5873 =C2=A0cloju= re.core/load-libs
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RestFn.java: =C2=A01= 37 =C2=A0clojure.lang.RestFn/applyTo
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 core.clj: =C2=A0659 =C2=A0clojure.core/apply
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 core.clj: 5911 =C2=A0clojure.core/require
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5911 =C2=A0clojure.core/requir= e
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RestFn.java: =C2=A0408 =C2=A0cloju= re.lang.RestFn/invoke
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 REPL: =C2=A0 =C2=A01 =C2=A0user/eval46259/loading--auto--
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 REPL: =C2=A0 =C2=A01 =C2= =A0user/eval46259
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 REPL: =C2=A0 =C2=A01 =C2=A0user/eval46259
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0Compiler.java: 6977 =C2=A0clojure.lang.Compiler/eval
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Compiler.java: 6966 =C2=A0clojure.lang.Compiler/eval
=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0Compiler.java: 6940 =C2=A0clojure.lang.Compiler/eval
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 3187 =C2=A0clojure.= core/eval
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 3183 =C2= =A0clojure.core/eval
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 main.clj:= =C2=A0242 =C2=A0clojure.main/repl/read-eval-print/fn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 main.clj: =C2=A0242 =C2=A0clojure.main/repl/read-e= val-print
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 main.clj: =C2=A0260= =C2=A0clojure.main/repl/fn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ma= in.clj: =C2=A0260 =C2=A0clojure.main/repl
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 main.clj: =C2=A0176 =C2=A0clojure.main/repl
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0RestFn.java: 1523 =C2=A0clojure.lang.RestFn/invoke
=C2=A0 =C2=A0 interrup= tible_eval.clj: =C2=A0 87 =C2=A0clojure.tools.nrepl.middleware.interruptibl= e-eval/evaluate/fn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 AFn.java: = =C2=A0152 =C2=A0clojure.lang.AFn/applyToHelper
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 AFn.java: =C2=A0144 =C2=A0clojure.lang.AFn/applyTo=
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: =C2=A0657 =C2=A0clojure.co= re/apply
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 1963 =C2= =A0clojure.core/with-bindings*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= core.clj: 1963 =C2=A0clojure.core/with-bindings*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0RestFn.java: =C2=A0425 =C2=A0clojure.lang.RestFn/invoke=
=C2=A0 =C2=A0 interrupti= ble_eval.clj: =C2=A0 85 =C2=A0clojure.tools.nrepl.middleware.interruptible-= eval/evaluate
=C2= =A0 =C2=A0 interruptible_eval.clj: =C2=A0 55 =C2=A0clojure.tools.nrepl.midd= leware.interruptible-eval/evaluate
=C2=A0 =C2=A0 interruptible_eval.clj: =C2=A0222 =C2=A0cloj= ure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
=C2=A0 =C2=A0 interrup= tible_eval.clj: =C2=A0190 =C2=A0clojure.tools.nrepl.middleware.interruptibl= e-eval/run-next/fn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 AFn.java: = =C2=A0 22 =C2=A0clojure.lang.AFn/run
=C2=A0 =C2=A0ThreadPoolExecutor.java: 1142 =C2=A0java.ut= il.concurrent.ThreadPoolExecutor/runWorker
=C2=A0 =C2=A0ThreadPoolExecutor.java: =C2=A0617 = =C2=A0java.util.concurrent.ThreadPoolExecutor$Worker/run
<= font face=3D"trebuchet ms, sans-serif">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0Thread.java: =C2=A0745 =C2=A0java.lang.Thread/run

<= font face=3D"trebuchet ms, sans-serif">1. Caused by java.lang.Exception
=C2=A0 =C2=A0Found li= b name 'incanter.stats' containing period with prefix 'quote= 9;. lib
=C2=A0 =C2= =A0names inside prefix lists must not contain periods

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 core.clj: =C2=A0659 =C2=A0clojure.core/apply
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5893 =C2=A0clojure.core/load-libs
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5873 =C2=A0clojure.core= /load-libs
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RestFn.java: =C2=A0137 =C2= =A0clojure.lang.RestFn/applyTo
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= core.clj: =C2=A0659 =C2=A0clojure.core/apply
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 core.clj: 5911 =C2=A0clojure.core/require
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 5911 =C2=A0clojure.core/require
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RestFn.java: =C2=A0408 =C2=A0clojure.= lang.RestFn/invoke
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 REPL: =C2=A0 =C2=A01 =C2=A0user/eval46259/loading--auto--
<= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 REPL: =C2=A0 =C2=A01 =C2=A0us= er/eval46259
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 R= EPL: =C2=A0 =C2=A01 =C2=A0user/eval46259
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Comp= iler.java: 6977 =C2=A0clojure.lang.Compiler/eval
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0Compiler.java: 6966 =C2=A0clojure.lang.Compiler/eval
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0Compiler.java: 6940 =C2=A0clojure.lang.Compiler/eval
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 3187 =C2=A0clojure.core/ev= al
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 3183 =C2=A0cloju= re.core/eval
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 main.clj: =C2= =A0242 =C2=A0clojure.main/repl/read-eval-print/fn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 main.clj: =C2=A0242 =C2=A0clojure.main/repl/read-eval-= print
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 main.clj: =C2=A0260 = =C2=A0clojure.main/repl/fn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mai= n.clj: =C2=A0260 =C2=A0clojure.main/repl
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 main.clj: =C2=A0176 =C2=A0clojure.main/repl
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0RestFn.java: 1523 =C2=A0clojure.lang.RestFn/invoke<= /div>
=C2=A0 =C2=A0 interruptib= le_eval.clj: =C2=A0 87 =C2=A0clojure.tools.nrepl.middleware.interruptible-e= val/evaluate/fn
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 AFn.java: = =C2=A0152 =C2=A0clojure.lang.AFn/applyToHelper
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 AFn.java: =C2=A0144 =C2=A0clojure.lang.AFn/applyTo=
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: =C2=A0657 =C2=A0clojure.co= re/apply
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 core.clj: 1963 =C2= =A0clojure.core/with-bindings*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= core.clj: 1963 =C2=A0clojure.core/with-bindings*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0RestFn.java: =C2=A0425 =C2=A0clojure.lang.RestFn/invoke=
=C2=A0 =C2=A0 interrupti= ble_eval.clj: =C2=A0 85 =C2=A0clojure.tools.nrepl.middleware.interruptible-= eval/evaluate
=C2= =A0 =C2=A0 interruptible_eval.clj: =C2=A0 55 =C2=A0clojure.tools.nrepl.midd= leware.interruptible-eval/evaluate
=C2=A0 =C2=A0 interruptible_eval.clj: =C2=A0222 =C2=A0cloj= ure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
=C2=A0 =C2=A0 interrup= tible_eval.clj: =C2=A0190 =C2=A0clojure.tools.nrepl.middleware.interruptibl= e-eval/run-next/fn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 AFn.java: = =C2=A0 22 =C2=A0clojure.lang.AFn/run
=C2=A0 =C2=A0ThreadPoolExecutor.java: 1142 =C2=A0java.ut= il.concurrent.ThreadPoolExecutor/runWorker
=C2=A0 =C2=A0ThreadPoolExecutor.java: =C2=A0617 = =C2=A0java.util.concurrent.ThreadPoolExecutor$Worker/run
<= font face=3D"trebuchet ms, sans-serif">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0Thread.java: =C2=A0745 =C2=A0java.lang.Thread/run
```


[stardiviner]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <Hack this world!>=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 GPG key ID: 47C32433
IRC(freeenode): stardiviner =C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Twitter:=C2=A0 @numbchild
Key fingerprint= =3D 9BAA 92BC CDDD B9EF 3B36=C2=A0 CB99 B8C4 B8E5 47C3 2433
Blog: http://stardiviner.g= ithub.io/

On Sat, Jun 17, 2017 at 9:46 AM, Tim Cross <= span dir=3D"ltr"><theophilusx@gmail.com> wrote:

My guess is that cider is not finding the incanter package in the
classpath when the first block attempts to evaluate. Another issue is
that your not using any session options, so your two blocks will be
evaluated in separate environments - not a real problem with your
current example, but will be an issue if you expect to access incanter
functions from separate babel blocks.

There are a number of working parts which all need to be lined up
correctly before babel clojure support will work correctly. Getting
things to work when your just using core clojure functions is fairly
trivial, but getting it to work when you have to pull in other
dependencies can be a little tricky.

You might find this article useful to get started

http://fgiasson.com/blog/index.php/2016/06/21/optimal-emac= s-settings-for-org-mode-for-literate-programming/

I also notice you have not set the org-babel-clojure-backend, which you
need to do. My recommendation would be to do the following

1. Create a leinegen project to experiment with i.e.
lein new app my-kk

2. Make sure you can edit and evaluate clojure just using clojure-mode
and cider in emacs

3. Add the incanter package to your project.clj dependencies key

4. Modify core.clj (using clojure-mode) to include the code in your
clojure blocks and run with cider to make sure they work as expected.

5. Create the org file you want to experiment with in the root of your
project. This should ensure that when you try to evaluate clojure
blocks, the cider backend will be loaded with the dependencies in the
project.clj file.

6. Copy the code in your core.clj file into ONE babel src block and see
if you can get it to evaluate correctly. Experiment with the block
configuration options like :output etc.

7. Break the code up into different blocks and experiment with block
options, especially session options.

Once you get to that point, you should be across the various moving
parts with sufficient understanding to then look at how you can tweak
things to get exactly the behaviour and workflow you want.

HTH

Tim

numbchild@gmail.com writes:

> When Org-mode buffer like this:
>
> #+BEGIN_SRC clojure
> (ns my.kk
>=C2=A0 =C2=A0(:require '[incanter.core :as kk]))
> #+END_SRC
>
> #+BEGIN_SRC clojure
> (print "hi")
> (def kkkk "hello")
> #+END_SRC
>
> #+RESULTS:
>
> When I have `(ns ..)` namespace clojure code in buffer, the second `(p= rint
> ..)` clojure result nothing. But when I remove the first src block, th= e
> `(print ..)` clojure src block works fine.
>
> I'm using Org-mode version from `master` with `use-package` like t= his:
>
> (use-package org
>=C2=A0 =C2=A0:load-path "~/Code/Emacs/org-mode/lisp/"
>=C2=A0 =C2=A0:pin manual
>=C2=A0 =C2=A0:mode (("\\.org$" . org-mode))
>=C2=A0 =C2=A0:config
>=C2=A0 =C2=A0(use-package org-plus-contrib
>=C2=A0 =C2=A0 =C2=A0:load-path "~/Code/Emacs/org-mode/contrib= /lisp/"
>=C2=A0 =C2=A0 =C2=A0:pin manual)
>=C2=A0 =C2=A0)
>
>
> [stardiviner]=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<Hack this wo= rld!>=C2=A0 =C2=A0 =C2=A0 GPG key ID: 47C32433
> IRC(freeenode): stardiviner=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Twitter:=C2=A0 @numbchild
> Key fingerprint =3D 9BAA 92BC CDDD B9EF 3B36=C2=A0 CB99 B8C4 B8E5 47C3= 2433
> Blog: http://stardiviner.github.io/


--
Tim Cross

--001a1144e55ca91fff0552277405--