2016-03-08 42 views
0

如果我有一些未保存的缓冲区,kill-emacs-hook何时调用?kill-emacs-hook何时调用?

方案A

  1. 用户调用kill-emacs
  2. 提示保存修改过的缓冲区。
  3. 取消kill-emacs操作(C-g)。
  4. 用户继续使用emacs。

方案B

  1. 用户调用kill-emacs
  2. 提示保存修改过的缓冲区。
  3. 保存所有修改的缓冲区
  4. Emacs死亡。

回答

0

正在运行kill-emacs-hookkill-emacs所做的第一件事情。

这两种情况都是无效的。如果用户直接调用kill-emacs,则用户为而不是提示保存缓冲区(仅在调用save-buffers-kill-emacs时完成)。

对于后者,如果用户中止查询以保存缓冲区,或者kill-emacs-query-functions的任何成员返回nil,则永不调用kill-emacs

+0

感谢您的建议。我终于'建议 - 加'':在'save-buffers-kill-emacs'之前实现我的目标。 – tom

0

我运行了这行代码并退出了emacs来测试发生了什么。

(add-hook 'kill-emacs-hook (lambda() (message "test")))

结论是,“试验”不Scenario A打印,但是印在Scenario B步骤之间3.4.

有输出的几行“文本”的打印后在例子B中,但没有更多的用户输入。

+0

Em ....我没有尝试过。但是有一个问题,3和4几乎同时运行,所以我永远无法看到消息日志。 – tom