在使用Emacs和SLIME的SBCL中抑制调试器?



~/.sbclrc中放入以下代码可以让我在从命令行使用SBCL REPL时无需潜入调试器(我觉得有点烦人)即可接收简化的错误消息。

(defun print-condition-hook (condition hook)
"Print this error message (condition) and abort the current operation."
(declare (ignore hook))
(princ condition)
(clear-input)
(abort))
(setf *debugger-hook* #'print-condition-hook)

当从Emacs和SLIME中运行SBCL REPL时(这是我与它交互的常用方式),每当我出现错误时,REPL都会坚持进入调试器。

在Emacs和SLIME中使用SBCL时,如何抑制调试器,同时仍然获得简化的错误消息/条件?

在SBCL中,除cl:*debugger-hook*外,还检查sb-ext:*invoke-debugger-hook*。SLIME和SLY同时使用这两种方法,而不是只用一种。更新前者以使用你的函数应该会得到你想要的行为。

调试器是使Common Lisp好用的东西之一。我可以理解在某些有限的情况下关闭它,但很难想象在默认情况下一直关闭它。

最新更新