我在http://www.gnu.org/software/emacs/manual/html_node/elisp/Saving-Buffers.html#Saving-缓冲区,但仍然不太明白两者之间的区别。在我看来,它们都像一个钩子一样工作,在将缓冲区保存到访问的文件之前运行您设置的任何函数。有人能举例说明吗?谢谢
write-file-functions
可以在保存文件之前简单地执行任意操作,但其声明的目的是允许一些非默认函数实际执行保存文件的工作(或者可能为了与保存机制本身更直接相关的目的而操纵内容)。
如果您不希望修改保存文件的机制,我强烈怀疑您应该使用before-save-hook
。
另请参见C-hig(elisp) Saving Buffers
RET
write-*-functions
提供了before-save-hook
所能做的严格超集。更具体地说,write-*-functions
可以用另一个机制取代正常的保存机制。这意味着添加到write-*-functions
的函数可能最终未被使用,因为之前的某个函数已经保存了缓冲区。
我想说before-save-hook
是来修改内容的。而write-*-functions
负责编码系统(例如压缩文件内容或遵循任何其他文件格式)和备份文件。
此外,CCD_ 10可以是缓冲区本地的,而CCD_。但我不确定它意味着什么。