before-save-hook和write-file-functions之间有什么区别

时间:2013-02-16 19:09:18

标签: emacs elisp

我在http://www.gnu.org/software/emacs/manual/html_node/elisp/Saving-Buffers.html#Saving-Buffers阅读了手册,但仍然不太明白两者之间有什么区别。在我看来,在将缓冲区保存到访问文件之前,它们都可以作为挂钩来运行您设置的任何函数。有谁可以用例子来解释?感谢。

3 个答案:

答案 0 :(得分:2)

在保存文件之前,

write-file-functions 可以用于简单地执行任意操作,但其声明的目的是允许某些非默认函数实际执行保存的工作该文件(或者为了更直接地与保存机制本身相关的目的操纵内容)。

如果修改保存文件的机制不是您想要做的,我强烈怀疑您应该使用before-save-hook

另见 C-h i g (elisp) Saving Buffers RET

答案 1 :(得分:1)

write-*-functions提供before-save-hook可以做的严格超集。更具体地说,write-*-functions可以替换正常的保存机制与另一个。这意味着添加到write-*-functions的函数可能最终未使用,因为某些早期函数已经保存了缓冲区。

答案 2 :(得分:0)

我会说before-save-hook来修改内容。虽然write-*-functions负责编码系统(例如压缩文件内容或遵循任何其他文件格式)和备份文件。

此外write-*-functions可能是缓冲本地的,而before-save-hook似乎不是这种情况。但后来我不知道它意味着什么。