2013-04-20 62 views
1

根据this question,我可以自定义变量*DEBUGGER-HOOK*,以便它回到顶层(在REPL中)而不是调试器。我已经将这行添加到我的〜/ .sbclrc中,并且当我从命令行启动sbcl时,这一切都很好。Emacs SLIME中的关闭调试器

(setf *debugger-hook* #'(lambda (c h) (declare (ignore h)) (print c) (abort))) 

但是,上述不适用于Emacs SLIME。每当我编译/加载文件(C-c C-k)时,它仍然调用调试器(带有中止计算,重启,输入新值等选项)。我怎样才能让SLIME打印错误信息并将我推回顶层?是的,它与SBCL和前面的〜/ .sbclrc一样。看起来SLIME不尊重用户的设置*DEBUGGER-HOOK*

+0

我想''DEBUGGER-HOOK *'指的是实现的调试器。它是标准的一部分。所以,我不认为SLIME是需要尊重它的。 – 2013-04-21 12:32:42

+0

@FaheemMitha是的,它是Common Lisp标准的一部分:http://clhs.lisp.se/Body/v_debugg.htm – 2013-04-21 20:33:08

回答

1

http://common-lisp.net/project/slime/doc/html/Other-configurables.html~/.swank.lisp文件中设置SWANK:*GLOBAL-DEBUGGER*为零应强制煤泥不能代替*DEBUGGER-HOOK*SWANK:SWANK-DEBUGGER-HOOK(这表明重启等的列表),但它在某种程度上不适合我的工作,即SWANK:*GLOBAL-DEBUGGER*是零,但无论如何*DEBUGGER-HOOK*由SLIME取代。也许你会更幸运。

作为一种解决方法,我可以建议将*DEBUGGER-HOOK*设置为任何你想要的手动粘液复制缓冲区,这对我来说很有用。

+0

不起作用,就像你一样。我在〜/ .swank.lisp中放了'(setq SWANK:* GLOBAL-DEBUGGER * nil)',但没有效果。我可以在REPL中设置'* debugger-hook *',但每次都做得笨拙。我想在slime-devel邮件列表中询问这个问题,如果没有人能够得到它。 – 2013-04-22 19:33:12