使用'font-lock-add-keywords'可以很容易地突出显示'define-and-bind-command',用法是
(defun my-elisp-mode-keywords()
(font-lock-add-keywords nil
'(
("\\<\\(define-and-bind-command\\)" . 'font-lock-keyword-face)
)
)
)
当然,您可以将“font-lock-keyword-face”更改为您喜欢的任何面孔,或者创建和使用您自己的面孔。您可以通过将点(光标)移到文本的字体锁定部分上并输入“describe-face”然后返回来非常容易地找到已经使用的面部名称。
Edit2:哦,当然你需要把这个 defun 挂到某个钩子上,对于 elisp 模式,这将是:
(add-hook 'emacs-lisp-mode-hook 'my-elisp-mode-keywords)
可以使用正则表达式来突出显示 foo 部分。
不幸的是,我还不能帮助您解决这部分问题,因为我不确定如何匹配包含“define-and-bind-command”但仅突出显示后面的单词的正则表达式。
编辑:除非您想在同一张面上同时突出显示“定义和绑定命令”和 foo 部分,否则它应该很容易。但我猜你想让他们有不同的面孔?
Edit3:更正了我的代码,stackoverflow 之前吃了一些大括号...
Edit4:好的,我有一个仅匹配第二部分的解决方案,我没有对其进行广泛测试,但它似乎有效。我允许 foo 包含除空格以外的任何字符(我认为还有换行符),我想可以将该事件进一步限制为 a-zA-z0-9 和“-”,因此请随意更改为您喜欢的。只负责匹配 foo 部分的代码是
("\\bdefine-and-bind-command\s\\([^\s]*\\)" 1 'font-lock-function-name-face t)
将它插入到上述函数中另一个 font-lock 关键字之后的行中,你就可以开始了。正则表达式匹配 'define-and-bind-command',它必须以一个单词(即\b表示)开头,后跟一个空格,然后返回(字体锁定)后面的所有内容,直到存在空格。
希望这可以帮助!