我偶尔会在 Clojure 中犯一个错误,而且我做的次数不够多,还没有立即知道我忘记了什么,但我仍然经常这样做,以至于它真的很烦人。
基本上在 using 之后nrepl-jack-in
,我经常忘记更改为正确的命名空间。
所以在 nrepluser>
提示符下,我输入一个函数,我得到:
CompilerException java.lang.RuntimeException: Unable to resolve symbol: foo-bar-baz in this context, compiling:(NO_SOURCE_PATH:1)
在给我返回提示之前打印在nrepl
缓冲区中。user>
所以我发现与其试图搞乱 Java/Clojure,可能有一种简单的方法可以直接从 Emacs 给出提示,只使用一些 Emacs 魔法。
如何添加钩子(?)或类似于 Emacs / nrepl-mode 的东西,以便在打印特定消息时(例如,包含“无法解析符号”和“在此上下文中”的消息)我可以添加一行这样说:
"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 输出并根据我的需要调整它们呢?