首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义repl/nrepl错误消息

自定义repl/nrepl错误消息
EN

Stack Overflow用户
提问于 2013-02-16 17:54:44
回答 1查看 173关注 0票数 0

我经常在Clojure中做一个错误,而且我没有经常这样做,我还没有立即知道我忘记了什么,但是我仍然经常这样做,以至于它变得非常烦人。

基本上,在使用nrepl-jack-in之后,我经常忘记更改正确的命名空间。

因此,在nrepl user>提示符下,我输入一个函数并得到:

代码语言:javascript
复制
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模式的内容,以便在打印特定消息时(例如,包含“无法解析符号”和“在此上下文中”的消息),我可以添加一行内容如下:

代码语言:javascript
复制
"Didn't you forget to change namespace?"

甚至:

代码语言:javascript
复制
"There's a .clj buffer opened using namespace abc.defk, didn't you forget to enter: (ns  abc.def) ?"

有相当多的错误信息,我在Clojure中发现了一些非常神秘的信息,我通常需要花一些时间才能弄清楚我做错了什么。如果我能够“个性化”这些错误消息直接从Emacs,我会赢得相当一段时间。

那么,我如何“拦截”nrepl输出并使它们适合我的需要呢?

EN

回答 1

Stack Overflow用户

发布于 2013-02-16 19:17:09

您必须修改nrepl-default-err-handler中的nrepl.el以达到预期的效果。如果与某个模式匹配,则可以通知(使用defadvice) nrepl-default-err-handler替换它的输出。不过,在我看来,用nrepl.el做这件事并不是什么特别好的主意。也许nREPL中间件是一种更好的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14913308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档