我在http://www.gnu.org/software/emacs/manual/html_node/elisp/Saving-Buffers.html#Saving-Buffers阅读了手册,但仍然不太明白两者之间有什么区别。在我看来,在将缓冲区保存到访问文件之前,它们都可以作为挂钩来运行您设置的任何函数。有谁可以用例子来解释?感谢。
答案 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
似乎不是这种情况。但后来我不知道它意味着什么。