如果我有一些未保存的缓冲区,kill-emacs-hook
何时调用?kill-emacs-hook何时调用?
方案A
- 用户调用
kill-emacs
。 - 提示保存修改过的缓冲区。
- 取消
kill-emacs
操作(C-g
)。 - 用户继续使用emacs。
方案B
- 用户调用
kill-emacs
。 - 提示保存修改过的缓冲区。
- 保存所有修改的缓冲区
- Emacs死亡。
如果我有一些未保存的缓冲区,kill-emacs-hook
何时调用?kill-emacs-hook何时调用?
方案A
kill-emacs
。kill-emacs
操作(C-g
)。方案B
kill-emacs
。正在运行kill-emacs-hook
是kill-emacs
所做的第一件事情。
这两种情况都是无效的。如果用户直接调用kill-emacs
,则用户为而不是提示保存缓冲区(仅在调用save-buffers-kill-emacs
时完成)。
对于后者,如果用户中止查询以保存缓冲区,或者kill-emacs-query-functions
的任何成员返回nil
,则永不调用kill-emacs
。
我运行了这行代码并退出了emacs来测试发生了什么。
(add-hook 'kill-emacs-hook (lambda() (message "test")))
结论是,“试验”不Scenario A
打印,但是印在Scenario B
步骤之间3.
和4.
有输出的几行“文本”的打印后在例子B中,但没有更多的用户输入。
Em ....我没有尝试过。但是有一个问题,3和4几乎同时运行,所以我永远无法看到消息日志。 – tom
感谢您的建议。我终于'建议 - 加'':在'save-buffers-kill-emacs'之前实现我的目标。 – tom