3

我正在尝试在 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 vfont-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)))

给出相同的行为。

4

2 回答 2

2

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

于 2014-04-02T07:57:27.950 回答
2

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

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

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

于 2014-04-02T08:25:34.210 回答