Je vois le même problème. En creusant un peu, je pense avoir identifié le problème. Cependant, je ne sais pas à qui cela doit être signalé.
Le problème est dans la fonction org-babel-execute: clojure. Cette fonction a le bit de code suivant
(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")))
Le problème réside dans l'appel à nrepl-sync-request: eval. La documentation indique pour cette fonction
(nrepl-sync-request: eval INPUT CONNECTION & NS optionnel)
Envoyez l'ENTRÉE au serveur nREPL de manière synchrone. La demande est envoyée via CONNECTION. Si NS n'est pas nul, incluez-le dans la demande.
Notez le dernier argument facultatif NS. Ceci est censé être un espace de noms clojure. Cependant, la fonction org-babel-execute: clojure appelle cette fonction avec la sortie de cider-current-session, qui renvoie un ID unique représentant la session en cours. Par conséquent, l'appel renvoie une structure de données avec une erreur et aucune sortie (peut-être qu'une gestion des erreurs est requise). Le résultat renvoyé est
(dict status (namespace-not-found done error done state state) id 17 session 43e9fd6c-82ed-49fe-9624-0cfc6f56f8b1 changed-namespaces (dict) repl-type cljclj)
Notez l' espace de noms introuvable
Soit l'argument devrait être un appel à (cider-current-ns), soit il devrait simplement être laissé de côté car je ne vois pas comment vous pouvez passer l'espace de noms dans le cadre de l'évaluation du bloc.
EDIT: voici un simple patch qui semble résoudre le problème. Généré par rapport au responsable actuel du référentiel 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
A également envoyé le patch à la liste emacs-orgmode
(cider-current-ns)
? Et si oui, où puis-je trouver cette fonction?ob-clojure
était un peu plus alors j'ai tiré par les plus récents, a fait les changements pertinents et ça marche! Merci beaucoup! Je souhaite que vous ayez répondu quelques jours auparavant! Je vous donnerais certainement la prime. :) Merci!find ~/.emacs.d/elpa/org* -name "*elc" -delete
, puis d'appliquer manuellement le correctif ci-dessus. La bonne nouvelle est que le patch fonctionne aujourd'hui.Vous devez avoir des arguments d'en-tête dans le bloc indiquant à org-babel ce que vous voulez inclure dans les résultats produits - résultat de l'évaluation ou sortie vers stdout ou les deux. Dans votre cas, il n'y a aucune sortie que l'évaluation de
(+ 1 1)
produit. Essayez(println (+ 1 1))
.la source
(println (+ 1 1))
ne fonctionne pas. J'ai copié-collé le code que vous avez ci-dessus et cela ne fonctionne pas non plus.Essayer
qui imprime la valeur retournée au lieu de la sortie.
la source
Ce problème n'est pas nécessairement spécifique aux Spacemacs.
Bien que l'OP ait implicitement cherché une solution dans Spacemacs, cela semble être un bon endroit pour mentionner une autre alternative (en particulier pour les utilisateurs non-Spacemacs qui rencontrent le même problème après avoir mis à jour une partie de leur configuration emacs / org-mode, qui c'est ce qui m'est arrivé).
Après avoir essayé de nombreuses réinstallations de diverses versions d'emacs et d'org, j'ai finalement trouvé que Aquamacs (!) Et Org 9.0.5 (téléchargés en tant que tar.gz comme indiqué sur http://orgmode.org/ ) ont réussi à contourner le
code block produced no output
problème que cette affiche a également connu.Bien qu'Aquamacs ne soit pas une solution à long terme pour tout le monde, il peut certainement aider d'autres personnes très dépendantes à utiliser org-babel avec clojure à contourner ce problème jusqu'à ce que la solution ci-dessus soit pleinement reconnue et mise en œuvre.
La version d'emacs utilisée par Aquamacs à compter du 9 mars 2017 est:
Aquamacs 3.3 GNU Emacs 25.1.1 (x86_64-apple-darwin14.1.0, NS appkit-1344.72 Version 10.10.2 (Build 14C109)) of 2016-09-19 on 24a02dbf6b34ae061ef4df89f15bfbc5d3ed497e
la source