在Emacs中添加/删除字体锁定关键字的语法

在Emacs中添加/删除字体锁定关键字的语法,emacs,elisp,syntax-highlighting,font-lock,cperl-mode,Emacs,Elisp,Syntax Highlighting,Font Lock,Cperl Mode,我对Emacs所做的大部分工作都是在perl中完成的,因此,cperl模式非常出色;一个主要的烦恼是,一个简单的my$whatever介绍被赋予了属性font-lock-keyword-face,这否定了使用关键字pop的优势。我是elisp的新手,所以一直在尝试从字体锁定中添加或删除关键字。虽然两者都给出了语法,但正则表达式让我抓狂。我得到了以下信息,不要在我的初始化中抱怨: (字体锁定删除关键字'cperl mode'(“\\字体锁定删除关键字功能旨在删除现有的字体锁定规则,在字体锁定术语中

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


(字体锁定删除关键字'cperl mode'(“\\字体锁定删除关键字
功能旨在删除现有的字体锁定规则,在字体锁定术语中,该规则是字体锁定关键字

如果将其应用于与现有字体锁定规则不完全匹配的内容,则它不会执行任何操作

它不是为删除语言关键字而设计的


他们最好的方法是查看变量
font-lock-keywords
,删除您不喜欢使用
font-lock-remove-keywords
的规则,然后使用
font-lock-add-keywords

添加规则的修改版本。幸运的是,注释不会收到缺点,因此,这里是:您可以定义违规将关键字作为常规基本字体——例如,黑色前景和白色背景。我不修改Emacs本身的来源,因为我经常从Emacs主干构建新版本。Lindydancer的建议是从那时开始的,但我以前没有研究过这一点,所以我没有基于此的解决方案。您可能还想采取一个查看源代码
../lisp/progmodes/cperl mode.el
,查看违规关键字是如何定义的。
my
从Emacs主干的第5129行开始被多次列出。你的意思是
font lock remove keywords
而不是
remove font lock keywords
?@xuhdev:是的,当然了,我已经更新了答案。(哎呀,我甚至写过****函数,很久以前,我甚至记不起它的名字了。我想是时候把我送进养老院了……)