我看到他有同样的问题。经过一点挖掘,我认为我已经找到了问题所在。但是,不确定应该向谁报告。
问题出在org-babel-execute:clojure函数中。该函数具有以下代码
(setq result
(nrepl-dict-get
(nrepl-sync-request:eval
expanded (cider-current-connection) (cider-current-session))
(if (or (member "output" result-params)
(member "pp" result-params))
"out"
"value")))
问题出在对nrepl-sync-request:eval的调用中。此功能的文档说明
(nrepl-sync-request:评估输入连接和可选NS)
将INPUT同步发送到nREPL服务器。该请求是通过CONNECTION分派的。如果NS为非nil,则将其包括在请求中。
注意最后一个可选参数NS。这应该是clojure名称空间。但是,org-babel-execute:clojure函数使用cider-current-session的输出调用此函数,该输出返回代表当前会话的唯一ID。结果,该调用将返回一个有错误且没有输出的数据结构(也许需要一些错误处理)。返回的结果是
(dict status (namespace-not-found done error done state state) id 17 session 43e9fd6c-82ed-49fe-9624-0cfc6f56f8b1 changed-namespaces (dict) repl-type cljclj)
注意命名空间未找到
该参数要么是对(cider-current-ns)的调用,要么应该被忽略掉,因为我不知道如何将名称空间作为块评估的一部分。
编辑:这是一个简单的补丁,似乎可以解决该问题。针对目前的org git repo主管生成
---
lisp/ob-clojure.el | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el
index d407105..e542a29 100644
--- a/lisp/ob-clojure.el
+++ b/lisp/ob-clojure.el
@@ -44,6 +44,7 @@
(declare-function cider-current-connection "ext:cider-client" (&optional type))
(declare-function cider-current-session "ext:cider-client" ())
+(declare-function cider-current-ns "ext:cider-client" ())
(declare-function nrepl--merge "ext:nrepl-client" (dict1 dict2))
(declare-function nrepl-dict-get "ext:nrepl-client" (dict key))
(declare-function nrepl-dict-put "ext:nrepl-client" (dict key value))
@@ -118,7 +119,7 @@ using the :show-process parameter."
org-babel-clojure-sync-nrepl-timeout))
(nrepl-sync-request:eval expanded
(cider-current-connection)
- (cider-current-session))))
+ (cider-current-ns))))
(setq result
(concat
(nrepl-dict-get response
@@ -153,7 +154,7 @@ using the :show-process parameter."
;; Update the status of the nREPL output session.
(setq status (nrepl-dict-get response "status")))
(cider-current-connection)
- (cider-current-session))
+ (cider-current-ns))
;; Wait until the nREPL code finished to be processed.
(while (not (member "done" status))
--
2.7.4
还将补丁发送到emacs-orgmode列表
(cider-current-ns)
吗?如果是这样,我在哪里可以找到该功能?