知识卡片

文本属性依附字符覆盖图独立标记区间

普通读书笔记卡 · 1813.b

内容

Emacs缓冲区里描述”这段文字有特殊性”有两种机制:文本属性挂在具体字符上,随字符串复制粘贴一起搬走,撤销日志会记录它的改动;覆盖图只标记一段区间的起止位置,不被视为文本本身的一部分,字符串无法携带覆盖图,撤销日志也不追踪它的变化。两者都能影响显示效果和鼠标响应,区别在于是不是文本自身携带的属性,决定了它能否随文本一起被复制、保存和撤销。

参考来源

- 位置:《架构之美》第11章《GNU Emacs:滋长的特性是其优势》11.2.1节《模型:缓冲区》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0236.xhtml) - 结论依据:原文明确"Emacs Lisp中的字符串也可以拥有文本属性……覆盖图……不被视为缓冲区文本的一部分:字符串是不能拥有覆盖图的,而且'撤销'日志也无法记录对覆盖图终点的修改"。 - 原始内容:Lisp代码可以为缓冲区中的字符添加文本属性……缓冲区的"撤销"日志除了记录文本本身的改变之外,还将记录文本属性的改变……覆盖图不被视为缓冲区文本的一部分:字符串是不能拥有覆盖图的,而且"撤销"日志也无法记录对覆盖图终点的修改。