仅在Emacs中的微缓冲区中显示错误消息

仅在Emacs中的微缓冲区中显示错误消息,emacs,Emacs,我在Emacs中打开了debug-on-error,当我有错误操作时,回溯缓冲区会弹出到前面。这很烦人,我只是想知道是否有办法在迷你缓冲区中显示调试错误消息?如果我真的想查看错误详细信息,我可以自己切换到回溯缓冲区。一个解决方案是关闭错误调试!然后,当您收到要查看回溯的错误消息时,再次打开它,并再次引发错误 当然,这只对您知道如何再现的错误有用 (顺便说一句,你指的是回声区,而不是微型缓冲区。)我觉得你遗漏了一个关键方面debug-on-error不只是将堆栈跟踪的文本生成为某种类型的log1;

我在Emacs中打开了debug-on-error,当我有错误操作时,回溯缓冲区会弹出到前面。这很烦人,我只是想知道是否有办法在迷你缓冲区中显示调试错误消息?如果我真的想查看错误详细信息,我可以自己切换到回溯缓冲区。

一个解决方案是关闭
错误调试
!然后,当您收到要查看回溯的错误消息时,再次打开它,并再次引发错误

当然,这只对您知道如何再现的错误有用


(顺便说一句,你指的是回声区,而不是微型缓冲区。)

我觉得你遗漏了一个关键方面
debug-on-error
不只是将堆栈跟踪的文本生成为某种类型的log1;它使您进入一个交互式调试器,这或多或少需要一些用户交互

我之所以说“或多或少”,是因为Emacs在这种情况下不会停止--您可以在调试器打开时继续执行操作--但是您也会注意到,
debug on error
在调试器打开时被忽略,因此如果您不与打开的调试器交互,后续错误将不会生成新的调试会话

不用说,您不希望在默认情况下启用此选项<代码>出错时调试是在需要时启用,但在其他情况下保持禁用的功能

我怀疑这里真正的问题是:你想调试什么?因为如果你觉得这个选项很烦人,它可能不是最好的选择。或者,您可以以更有针对性的方式使用它

首先(使用
debug on error
变量),您可以将其限制为特定的错误条件列表,和/或配置
debug ignored errors
以排除不希望调试的错误

其次,还有许多其他方法可以使用标准调试器,这可能是更好的解决方案。e、 g:

;; M-x debug-on-entry FUNCTION
;; M-x cancel-debug-on-entry &optional FUNCTION
;; M-x toggle-debug-on-quit
;; setq debug-on-signal
;; setq debug-on-next-call
;; setq debug-on-event
;; setq debug-on-message REGEXP
;; (debug &rest DEBUGGER-ARGS)
(还有
edebug

当然,您也应该查看手册:
C-hig
(elisp)调试


1如果您想要一个只将堆栈跟踪记录到缓冲区然后继续的选项,您可以通过
M-x report emacs bug

将其作为功能请求提出。请注意,如果您自己正在编写emacs包,并且希望在不启动调试器的情况下发出一个普通错误,则可以使用
user error
。此外,如果要挑出现有包中的错误,可以将错误符号或regexp:s匹配的错误消息添加到
debug-ignorers