42.12.7 自动分配文本视觉样式

该钩子用于自动为缓冲区中的文本分配文本视觉样式。 它是即时锁定模式实现的一部分,供字体锁定模式使用。

Variable: fontification-functions

该变量保存一组函数,Emacs 重绘时会在重绘前按需调用它们。 即使未启用字体锁定模式,这些函数依然会被调用。 启用字体锁定模式时,该变量通常只包含一个函数 jit-lock-function

函数按列表顺序依次调用,参数为缓冲区位置 pos。 它们应共同为当前缓冲区中从 pos 开始的文本分配文本视觉样式。

函数应通过设置 face 属性来记录所分配的样式, 同时为所有已分配样式的文本添加非 nilfontified 属性。 该属性告知重绘引擎这些文本已完成样式分配。

如果 pos 之后的字符已带有非 nilfontified 属性, 函数最好不执行任何操作,但这并非强制要求。 若某个函数覆盖了前面函数的分配结果, 则以最后一个函数执行完毕后的属性为准。

为提升效率,建议编写这些函数时, 每次调用大致为 400 到 600 个字符分配样式。

注意,若缓冲区文本包含极长行, 这些函数的调用效果类似于在 with-restriction 形式中执行(see 范围限制), 带有 long-line-optimizations-in-fontification-functions 标记, 且缓冲区被缩小至 pos 附近区域。