kill-emacs-hook 什么时候被调用?
When is kill-emacs-hook called?
如果我有一些未保存的缓冲区,kill-emacs-hook
什么时候调用?
场景A
- 用户调用
kill-emacs
.
- 提示保存修改后的缓冲区。
- 取消
kill-emacs
操作(C-g
)。
- 用户继续使用 emacs。
场景 B
- 用户调用
kill-emacs
.
- 提示保存修改后的缓冲区。
- 保存所有修改的缓冲区
- Emacs 被杀死。
我 运行 这行代码并退出 emacs 以测试发生了什么。
(add-hook 'kill-emacs-hook (lambda () (message "test")))
结论是 "test was" 未在 Scenario A
中打印,但在 Scenario B
中打印在步骤 3.
和 4.
之间
在示例 B 中打印 "text" 之后多了几行输出,但没有更多的用户输入。
运行 kill-emacs-hook
是 kill-emacs
做的第一件事。
您的两种方案均无效。如果用户直接调用 kill-emacs
,则 不会 提示用户保存缓冲区(只有在调用 save-buffers-kill-emacs
时才会这样做)。
对于后者,如果用户中止查询以保存缓冲区,或者 kill-emacs-query-functions
return nil
的任何成员,则 kill-emacs
永远不会打电话。
如果我有一些未保存的缓冲区,kill-emacs-hook
什么时候调用?
场景A
- 用户调用
kill-emacs
. - 提示保存修改后的缓冲区。
- 取消
kill-emacs
操作(C-g
)。 - 用户继续使用 emacs。
场景 B
- 用户调用
kill-emacs
. - 提示保存修改后的缓冲区。
- 保存所有修改的缓冲区
- Emacs 被杀死。
我 运行 这行代码并退出 emacs 以测试发生了什么。
(add-hook 'kill-emacs-hook (lambda () (message "test")))
结论是 "test was" 未在 Scenario A
中打印,但在 Scenario B
中打印在步骤 3.
和 4.
在示例 B 中打印 "text" 之后多了几行输出,但没有更多的用户输入。
运行 kill-emacs-hook
是 kill-emacs
做的第一件事。
您的两种方案均无效。如果用户直接调用 kill-emacs
,则 不会 提示用户保存缓冲区(只有在调用 save-buffers-kill-emacs
时才会这样做)。
对于后者,如果用户中止查询以保存缓冲区,或者 kill-emacs-query-functions
return nil
的任何成员,则 kill-emacs
永远不会打电话。