我经常在Clojure中做一个错误,而且我没有经常这样做,我还没有立即知道我忘记了什么,但是我仍然经常这样做,以至于它变得非常烦人。
基本上,在使用nrepl-jack-in之后,我经常忘记更改正确的命名空间。
因此,在nrepl user>提示符下,我输入一个函数并得到:
CompilerException java.lang.RuntimeException: Unable to resolve symbol: foo-bar-baz in this context, compiling:(NO_SOURCE_PATH:1)在返回nrepl提示符之前,打印在user>缓冲区中。
因此,我想出了一个简单的方法,可以直接从Emacs那里得到提示,而不是试图用一些Emacs的魔法来处理Java / Clojure。
如何添加钩子(?)或者类似Emacs /nrepl模式的内容,以便在打印特定消息时(例如,包含“无法解析符号”和“在此上下文中”的消息),我可以添加一行内容如下:
"Didn't you forget to change namespace?"甚至:
"There's a .clj buffer opened using namespace abc.defk, didn't you forget to enter: (ns abc.def) ?"有相当多的错误信息,我在Clojure中发现了一些非常神秘的信息,我通常需要花一些时间才能弄清楚我做错了什么。如果我能够“个性化”这些错误消息直接从Emacs,我会赢得相当一段时间。
那么,我如何“拦截”nrepl输出并使它们适合我的需要呢?
发布于 2013-02-16 19:17:09
您必须修改nrepl-default-err-handler中的nrepl.el以达到预期的效果。如果与某个模式匹配,则可以通知(使用defadvice) nrepl-default-err-handler替换它的输出。不过,在我看来,用nrepl.el做这件事并不是什么特别好的主意。也许nREPL中间件是一种更好的方法。
https://stackoverflow.com/questions/14913308
复制相似问题