【问题标题】:Why is font-lock-keyword-face highlighting text within double quotes in Emacs?为什么 font-lock-keyword-face 在 Emacs 中突出显示双引号内的文本?
【发布时间】:2014-04-02 06:16:00
【问题描述】:

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

给出相同的行为。

【问题讨论】:

  • 看起来您的testing-font-lock-keywords 定义已损坏;再次检查您提供的链接以及C-h v font-lock-defaults 以查看它期望的格式
  • @assem 查看我更新的问题。所以也许这种行为是由于font-lock-defaults
  • 如果你正在编写新的字体锁定关键字,何不试试我的新字体锁定调试器font-lock-studio

标签: emacs elisp font-lock


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。是否可以关闭此效果?
  • 我想我找到了解决方案:看来您可以使用以下命令将其关闭:(setq font-lock-keywords-only t)
  • 太好了,这正是我要找的东西
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多