如果我有一些未保存的緩衝區,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