为什么font-lock-keyword-face在Emacs中用双引号突出显示文本?

时间:2014-04-02 06:16:01

标签: emacs elisp font-lock

我正在尝试在Emacs中设置一个主要模式,我想突出显示某些关键字。 使用此页面中的模板:http://ergoemacs.org/emacs/elisp_syntax_coloring.html我尝试过:

(setq testing-font-lock-keywords
  `((font-lock-keyword-face)
))

(define-derived-mode testing-mode fundamental-mode
  "testing file mode"
  "Major mode for editing test files"

  (setq font-lock-defaults '(testing-font-lock-keywords))
  (setq mode-name "testing")
)

(provide 'testing-mode)

如果我在简单的测试文件上使用此模式,并键入"hello",则文本hello会以不同的颜色标记。也就是说,双引号内的任何文本都会突出显示。为什么会这样?

我认为它与变量font-lock-keyword-face有关。但如果我输入 C-h v font-lock-keyword-face,它会说:

font-lock-keyword-face is a variable defined in `font-lock.el'.
Its value is font-lock-keyword-face

更新

似乎它与font-lock-keyword-face无关,因为定义testing-font-lock-keywords就像:

(setq test-keywords '("TEST"))
(setq testing-font-lock-keywords
  `((,test-keywords)))

给出相同的行为。

2 个答案:

答案 0 :(得分:2)

这是由变量`font-lock-syntactic-face-function'

引导的

答案 1 :(得分:2)

Emacs提供两件事:1)语法,这包括语法表中声明的注释和字符串。 2)关键词。

通常,您希望第一阶段运行,但您可能需要更新语法表以匹配语言的语法。

此外,可以编写font-lock关键字,以便它们覆盖现有颜色,以便您可以在预先着色的注释和字符串中突出显示文本。请参阅OVERRIDE中的font-lock-keywords标记。