当 Emacs 显示某段文本时,文本的视觉外观 可能由来自不同来源的文本视觉样式决定。如果这些不同来源 为某个字符共同指定了多个文本视觉样式,Emacs 会合并 各个文本视觉样式的属性。以下是 Emacs 合并文本视觉样式的顺序, 按优先级从高到低排列:
region 文本视觉样式高亮显示。See Standard Faces in The GNU Emacs Manual。
nil 的 face 属性的覆盖层中,Emacs 会应用该属性指定的文本视觉样式。
如果覆盖层具有 mouse-face 属性,且鼠标距离该覆盖层足够近,Emacs 会转而应用
mouse-face 属性指定的文本视觉样式或样式属性。See 覆盖层属性。
当多个覆盖层覆盖同一个字符时,优先级更高的覆盖层会覆盖优先级较低的覆盖层。See 覆盖层。
face 或 mouse-face 属性,Emacs 会应用指定的文本视觉样式与样式属性。
See 具有特殊含义的文本属性。(字体锁定模式的文本视觉样式就是这样应用的。See Font Lock Mode。)
mode-line 文本视觉样式。
对于未选中窗口的模式行,Emacs 会应用 mode-line-inactive 文本视觉样式。
对于标题行,Emacs 会应用 header-line 文本视觉样式。
对于标签行,Emacs 会应用 tab-line 文本视觉样式。
before-string 或 after-string 属性的覆盖层字符串(see 覆盖层属性),
或是来自显示字符串(see 其他显示规范),并且该字符串不包含 face 或 mouse-face 属性,
或是这些属性未定义某些样式属性,但受该覆盖层/显示属性影响的缓冲区文本确实定义了文本视觉样式或这些属性,
Emacs 会应用“底层”缓冲区文本的样式属性。请注意,即使覆盖层或显示字符串显示在显示边距中也是如此(see 在边距中显示)。
default 文本视觉样式的对应属性。
在每一个阶段,如果某个文本视觉样式具有有效的 :inherit 属性,
Emacs 会将值为 unspecified 的属性视为继承自父文本视觉样式的对应值。see 文本视觉样式属性。
请注意,父文本视觉样式也可能未指定该属性;这种情况下,该属性在下一步的文本视觉样式合并中仍保持未指定状态。