如何在Clojure代码上执行等效的eval-last-sexp

时间:2012-04-25 14:44:06

标签: emacs clojure synchronization read-eval-print-loop

编辑由于我尚未完全理解的原因,我的Cx Ce被绑定到 eval-last-sexp 而不是(?)史莱姆-eval-最后表达。现在我可以从 .clj 缓冲区中 Cx Ce ,我至少可以直接看到我的函数是(正确)但是,但是,这显然不会使函数我只是 slime-eval-last-expression “可用”到REPL。

我已经设置了我的Emacs来进行一些Clojure编程,我不知道我的设置是否正确。

我有两个缓冲区:一个用于 .clj 文件,另一个用于REPL。我正在使用 clojure-jack-in 来启动REPL。

显然我需要总是编译 .clj 总是强迫我用提示保存文件)然后我需要切换到REPL和在REPL中发出(使用'myname.space),然后再尝试我写的新函数。

这是一个非常简单的事情,需要按很多键。

现在,当然,我可以编写一个Emacs宏来完成 save / confirm /切换到REPL / issue(使用'myname.space) shebang但是我想知道我的设置是否正确不是吗?

我想我的问题换句话说就是:我连接到的REPL应该始终与包含我正在处理的 .clj 的缓冲区“同步”或者不?

1 个答案:

答案 0 :(得分:3)

如果您使用Emacs编辑clojure,则应该使用Slime。见https://github.com/technomancy/swank-clojure

然后,当您使用Mx clojure-jack-in启动并连接emacs中的REPL时,您可以执行Cx Ce编译并加载当前的sexp或Cx Ck来编译并加载当前缓冲区。

换句话说,你的repl不会与你在一些clojure代码缓冲区中输入的内容“自动”同步,但是有更快更简单的方法将代码从缓冲区发送到正在运行的clojure程序。 / p>