【问题标题】:Syntax for adding/removing font-lock keywords in Emacs在 Emacs 中添加/删除 font-lock 关键字的语法
【发布时间】:2013-08-09 17:49:43
【问题描述】:

我对 Emacs 所做的大部分工作都是在 perl 中完成的,为此 cperl-mode 非常出色;一个主要的烦恼是一个简单的my $whatever 介绍被赋予属性font-lock-keyword-face,这消除了关键字pop 的优势。我是 elisp 的新手,因此一直在尝试在 font-lock 中添加或删除关键字。虽然EmacsWikiGNU 都给出了语法,但正则表达式让我抓狂。在我的初始化中,我得到了以下内容:

(font-lock-remove-keywords 'cperl-mode '(("\\<\\(my\\)")))

它什么也没做。 \\<\\(my\\) 位与re-builder 一起工作,所以我认为我在这里遇到了语法问题。如何添加和删除关键字?

【问题讨论】:

  • 幸运的是 cmets 不能接受缺点,所以这里是:您可以将有问题的关键字定义为您的常规基本字体 - 例如,黑色前景与白色背景。我不修改 Emacs 本身的源代码,因为我经常从 Emacs Trunk 构建新版本。 Lindydancer 的建议是从那以后产生的,但我之前没有研究过,所以我没有基于此的解决方案。
  • 您可能还想查看源 .../lisp/progmodes/cperl-mode.el 以了解违规关键字是如何定义的。从 Emacs Trunk 的第 5129 行开始,my 被多次列出。

标签: emacs elisp syntax-highlighting font-lock cperl-mode


【解决方案1】:

font-lock-remove-keywords 函数旨在删除现有的字体锁定规则,在字体锁定术语中,该规则是 font-lock 关键字

如果您将其应用于与现有字体锁定规则不完全匹配的内容,则它什么也不做。

它并非旨在删除语言关键字。

他们最好的方法是查看变量font-lock-keywords 并使用font-lock-remove-keywords 删除您不喜欢的规则,然后使用font-lock-add-keywords 添加规则的修改版本。

【讨论】:

  • 你的意思是font-lock-remove-keywords而不是remove-font-lock-keywords
  • @xuhdev:是的,我当然知道——我已经更新了答案。 (哎——我什至写了 **** 函数,从前,我什至不记得它的名字。我想是时候把我滚进疗养院了......)
猜你喜欢
  • 2015-02-06
  • 2011-12-19
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 2013-08-02
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多