Widzę ten sam problem. Przy odrobinie kopania wydaje mi się, że zidentyfikowałem problem. Nie jestem jednak pewien, do kogo należy to zgłosić.
Problem tkwi w funkcji org-babel-execute: clojure. Ta funkcja ma następujący bit kodu
(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")))
Problem polega na wywołaniu polecenia nrepl-sync: eval. Dokumentacja stwierdza dla tej funkcji
(nrepl-sync-request: eval INPUT CONNECTION & opcjonalnie NS)
Wyślij INPUT do serwera nREPL synchronicznie. Żądanie jest wysyłane przez POŁĄCZENIE. Jeśli NS ma wartość inną niż zero, dołącz ją do żądania.
Zwróć uwagę na ostatni opcjonalny argument NS. To ma być przestrzeń nazw clojure. Jednak funkcja org-babel-execute: clojure wywołuje tę funkcję z danymi wyjściowymi z sesji cydru-prądu, która zwraca unikalny identyfikator reprezentujący bieżącą sesję. W rezultacie wywołanie zwraca strukturę danych z błędem i bez danych wyjściowych (być może wymagana jest pewna obsługa błędów). Zwrócony wynik to
(dict status (namespace-not-found done error done state state) id 17 session 43e9fd6c-82ed-49fe-9624-0cfc6f56f8b1 changed-namespaces (dict) repl-type cljclj)
Zwróć uwagę na nieznaną przestrzeń nazw
Albo argumentem powinno być wywołanie do (cydr-prąd-ns), a może po prostu należy je pominąć, ponieważ nie widzę, jak można przekazać przestrzeń nazw w ramach oceny bloku.
EDYCJA: oto prosta łatka, która wydaje się naprawić problem. Wygenerowano w stosunku do bieżącego szefa repozytorium org git
---
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
Wysłałem również łatkę na listę emacs-orgmode
(cider-current-ns)
? A jeśli tak, to gdzie mogę znaleźć tę funkcję?