在Cider REPL中打印执行结果

3
我想知道在使用cider-connect时,是否有一种方式可以在emacs cider中输出当前执行的结果。
例如:
  • 我在项目目录上运行lein repl

  • 然后使用cider-connect在emacs中连接它。

现在假设我在我的ring处理程序的代码中有(println "cider is amazing by the way"),当发出请求时,这只会在我运行lein repl的控制台中打印。
如何在我的nrepl缓冲区中也输出此输出?
2个回答

2
很抱歉,我怀疑您无法按照您描述的方式完成此操作。输出直接发送到设备的控制台,与nrepl无关。如果考虑到nrepl通常甚至不在同一台计算机上运行,这也是有道理的(nrepl中的“n”代表“网络”)。
也许您可以安排将该输出tee到一个文件中,然后您可以在nrepl缓冲区上启动一个线程,cat该文件。或者在emacs中有一个监视远程文件的缓冲区。

谢谢Arthur,那么是否有其他方法,比如在Clojure代码中打开nrepl?目的是将输出显示在Emacs中,如果需要修改我的工作流程,我也可以接受 :) 你说得对,我在不同的(虚拟)机器上使用它。 - nha
出于其他原因(与他人合作、速度等),我更喜欢在 tmux 会话中启动远程系统上的 emacs,然后多个人可以使用 mosh 进入(mosh 是 ssh 的一个惊人补充),tmux attach 并共享 emacs。我还可以从直接在笔记本电脑上运行的 emacs 会话中 连接,尽管这种情况发生得较少。这不是一个直接的答案,只是另一种流畅适用于某些人的工作方式。 - Arthur Ulfeldt
那很有趣,谢谢分享。如果我错了,请纠正我,这意味着拥有一个“原始”的emacs?这似乎符合与他人分享的一致性。 - nha
1
“Vanilla” Emacs 对所有人都没用(防火服)在这种情况下,这实际上成为了与团队建立社区并良好协作的问题。因此,我怀疑这已经超出了 SO 评论或答案的范围。顺便说一句,我们将配置文件上传到 GitHub 上,我的在这里:https://github.com/thearthur/arthur-s-emacs-config - Arthur Ulfeldt

0

如果您通过cider-jack-in启动leiningen,则应在repl缓冲区中获得输出。

使用远程设置的一种方法是调用C-u M-x cider-jack-in并使用专用服务器命令,该命令将在远程机器上触发lein repl命令(例如通过ssh) - 我还没有检查过这是否实际有效,但我不认为它不会。如果您可以通过tramp访问代码,则无论代码是否远程,都不应该有太大影响。


即使使用cider-jack-in,我也无法获得我想要的命名空间的输出。我可以在REPL中输入命令并得到输出,但并非所有信息都有输出。 - nha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接