【发布时间】:2013-02-16 19:09:17
【问题描述】:
我在http://www.gnu.org/software/emacs/manual/html_node/elisp/Saving-Buffers.html#Saving-Buffers 阅读了手册,但仍然不太明白两者之间的区别。在我看来,它们都作为一个挂钩来运行您在将缓冲区保存到访问文件之前设置的任何功能。任何人都可以用例子来解释吗?谢谢。
【问题讨论】:
我在http://www.gnu.org/software/emacs/manual/html_node/elisp/Saving-Buffers.html#Saving-Buffers 阅读了手册,但仍然不太明白两者之间的区别。在我看来,它们都作为一个挂钩来运行您在将缓冲区保存到访问文件之前设置的任何功能。任何人都可以用例子来解释吗?谢谢。
【问题讨论】:
write-file-functions 可以用于在保存文件之前简单地做任何事情,但其声明的目的是允许一些非默认函数实际完成保存的工作em> 文件(或者可能是为了与保存机制本身更直接相关的目的来操纵内容)。
如果你不想修改保存文件的机制,我强烈怀疑你应该使用before-save-hook。
另见 C-hig (elisp) Saving Buffers RET
【讨论】:
write-*-functions 提供了before-save-hook 可以做什么的严格超集。更具体地说,write-*-functions 可以替换正常的保存机制。这意味着添加到write-*-functions 的函数最终可能会被未使用,因为一些较早的函数已经保存了缓冲区。
【讨论】:
好吧,我想说before-save-hook 是来修改内容的。而write-*-functions 负责编码系统(例如压缩文件内容或遵循任何其他文件格式)和备份文件。
此外,write-*-functions 可能是本地缓冲区,而before-save-hook 似乎并非如此。但是我不确定它意味着什么。
【讨论】:
delete-trailing-whitespace 以删除不必要的空格,但我只是对它们的一般功能感兴趣