Tôi đang nhìn thấy anh ấy cùng một vấn đề. Trong một chút đào, tôi nghĩ rằng tôi đã xác định được vấn đề. Tuy nhiên, không chắc chắn điều này nên được báo cáo cho ai.
Vấn đề là ở hàm org-babel-exec: clojure. Hàm này có bit mã sau
(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")))
Vấn đề là trong lệnh gọi nrepl-sync-request: eval. Các tài liệu nêu rõ chức năng này
(nrepl-sync-request: eval INPUT KẾT NỐI & NS tùy chọn)
Gửi INPUT đến máy chủ nREPL một cách đồng bộ. Yêu cầu được gửi qua KẾT NỐI. Nếu NS không phải là con số không, hãy đưa nó vào yêu cầu.
Lưu ý đối số tùy chọn cuối cùng NS. Đây được cho là một không gian tên clojure. Tuy nhiên, hàm org-babel-exec: clojure đang gọi hàm này với đầu ra từ cider-current-session, trả về một ID duy nhất đại diện cho phiên hiện tại. Do đó, cuộc gọi đang trả về cấu trúc dữ liệu có lỗi và không có đầu ra (có lẽ cần phải xử lý một số lỗi). Kết quả trả về là
(dict status (namespace-not-found done error done state state) id 17 session 43e9fd6c-82ed-49fe-9624-0cfc6f56f8b1 changed-namespaces (dict) repl-type cljclj)
Lưu ý không gian tên không tìm thấy
Đối số nên là một cuộc gọi đến (cider-current-ns) hoặc có lẽ nó nên bị bỏ qua vì tôi không thấy cách bạn có thể vượt qua không gian tên như một phần của đánh giá khối.
EDIT: đây là một bản vá đơn giản xuất hiện để khắc phục vấn đề. Tạo ra chống lại người đứng đầu hiện tại của 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
Đồng thời gửi bản vá đến danh sách emacs-orgmode
(cider-current-ns)
? Và nếu vậy, tôi có thể tìm thấy chức năng đó ở đâu?