24.7.8 语法字体锁定

语法字体高亮通过语法表(see Syntax Tables)查找并高亮语法相关的文本。 若启用,它会在基于搜索的高亮之前运行。变量 font-lock-syntactic-face-function(见下文说明)决定对哪些语法结构进行高亮。 有多个变量会影响语法高亮,你应当通过 font-lock-defaults 进行设置(see Font Lock 基础)。

每当字体锁定模式对一段文本执行语法高亮时,都会先调用 syntax-propertize-function 指定的函数。主模式可以利用它来应用 syntax-table 文本属性,以便在特殊场景下覆盖缓冲区自身的语法表。 See Syntax Properties

Variable: font-lock-keywords-only

若该变量值为非 nil,字体锁定将**不执行语法高亮**, 仅基于 font-lock-keywords 做基于搜索的高亮。 该值通常由字体锁定模式根据 font-lock-defaults 中的 keywords-only 元素自动设置。若值为 nil, 字体锁定会调用 jit-lock-register(see 字体锁定其他变量), 以便在某行被修改后,自动重新高亮缓冲区后续文本,以反映修改带来的新语法上下文。

若只想使用**语法高亮**,应将此变量设为非 nil, 同时将 font-lock-keywords 设为 nil(see Font Lock 基础)。

Variable: font-lock-syntax-table

该变量保存用于高亮注释和字符串的语法表。 它通常由字体锁定模式根据 font-lock-defaults 中的 syntax-alist 元素设置。若值为 nil, 语法高亮将使用缓冲区自身的语法表(即函数 syntax-table 返回的值;see Syntax Table Functions)。

Variable: font-lock-syntactic-face-function

若该变量非 nil,其值应为一个函数, 用于为给定的语法元素(字符串或注释)决定使用哪种外观。

该函数接收一个参数:由 parse-partial-sexp 返回的当前点解析状态, 并应返回一个外观。默认函数对注释返回 font-lock-comment-face, 对字符串返回 font-lock-string-face(see 字体锁定专用外观)。

该变量通常通过 font-lock-defaults 中的 “other” 元素设置:

(setq-local font-lock-defaults
            `(,python-font-lock-keywords
              nil nil nil
              (font-lock-syntactic-face-function
               . python-font-lock-syntactic-face-function)))

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike