2016-03-08 31 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