当缓冲区被修改时,字体锁定默认重新高亮的区域是覆盖修改位置的最小整行序列。 虽然这在大多数情况下工作良好,但某些场景下并不适用—— 例如,某次修改改变了更早行上文文本的语法含义。
你可以通过设置以下变量来扩大(甚至缩小)需要重新高亮的区域:
这个缓冲区局部变量要么为 nil,要么是一个函数,
供字体锁定模式调用以确定需要扫描并高亮的区域。
该函数接收三个参数:来自 after-change-functions 的标准参数
beg、end 和 old-len(see Change Hooks)。
它应当返回一个 cons 对,表示要高亮区域的起始和结束缓冲区位置(按此顺序),
或返回 nil(表示按标准方式选择区域)。
该函数需要保持当前点、匹配数据和当前限制不变。
其返回的区域可以在行中间开始或结束。
由于该函数在每次缓冲区修改后都会调用,因此必须保证足够高效。