文本属性的说明文档中说:
由于文本属性被认为是缓冲区(或字符串)内容的一部分,并且可能影响缓冲区在屏幕上的显示,因此对缓冲区文本属性的任何更改都会将缓冲区标记为已修改。
首先,我不理解这个策略。有人能解释一下吗?文本属性实际上并没有保存在文件中,当缓冲区被保存时也不会保存。那么为什么要将缓冲区标记为已修改呢?对我来说,缓冲区已修改表示“某些更改尚未保存”。但了解这个策略只是为了自己的娱乐。
更重要的是,是否已经有一种既定的方法可以在代码中更改缓冲区中文本的语法文本属性,同时保持缓冲区已修改标志设置为之前的状态?我想到了类似于save-excursion
的东西。虽然编写这样的函数非常容易,但这似乎是一个常见的情况,如果可能的话,我想使用标准函数。
关于这种情况的更多信息 - 我有一个模式,它执行完整的文本扫描并在文本上设置语法表属性。打开缓冲区后,扫描运行,但它会导致将缓冲区修改标志设置为t。
像往常一样,谢谢。
with-silent-modifications
,但 Windows 构建版本 23.3.1 仍然缺乏这样的定义。多么奇怪啊。http://www.gnu.org/software/emacs/NEWS.23.3 - seh