如何在 pkill -SIGUSR2 emacs 之后自动关闭 debug-on-quit?

pkill -SIGUSR2 emacs 之后会导致 C-g 无法正常退出 minibuffer:

emacs-M-x-C-g-error

重现步骤:

  1. 终 端:emacs -Q&
  2. 终 端:pkill -SIGUSR2 -i emacs
  3. Emacs:M-x
  4. Emacs:C-g

原因是 debug-on-quit 激活了,手动关闭就好。如果开启了 server 模式,可以 pkill -SIGUSR2 -i emacs; emacsclient -e '(setq debug-on-quit nil)',非 server 模式又该如何?

M-x toggle-debug-on-quit RET

这不就是手动嘛。

我本来想用 variable watcher 监测一下 debug-on-quit 的变化,看看能否判别变更事件的来源,结果发现这个变量随时都在 set/unset,频繁度不比 pre-command-hook/post-command-hook 低。