根据这个问题,我可以自定义变量*DEBUGGER-HOOK*
,使其回退到顶层(在 REPL 中)而不是调试器。我已将此行添加到我的 ~/.sbclrc 中,当我从命令行启动 sbcl 时一切正常。
(setf *debugger-hook* #'(lambda (c h) (declare (ignore h)) (print c) (abort)))
但是,以上不适用于 Emacs SLIME。每当我编译/加载文件(Cc Ck)时,它仍然会调用调试器(带有中止计算、重新启动、输入新值等选项)。我怎样才能让 SLIME 只打印错误消息并让我回到顶层?是的,它与 SBCL 和 ~/.sbclrc 和以前一样。看起来 SLIME 不尊重用户的*DEBUGGER-HOOK*
.