使用“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”并按回车键来非常容易地找到已经使用过的面的名称。
编辑2:当然,你需要将该defun钩到某个钩子上,对于elisp模式,这将是:
(add-hook 'emacs-lisp-mode-hook 'my-elisp-mode-keywords)
突出显示foo部分可以使用正则表达式。如果您只想突出显示单词后面的内容,但不确定如何匹配包含“define-and-bind-command”的正则表达式,那么我暂时无法帮助您。
编辑:除非您想在同一面中突出显示“define-and-bind-command”和foo部分,否则这应该很容易。但我猜您想要它们具有不同的外观?
编辑3:更正了我的代码,stackoverflow之前吃掉了一些大括号...
编辑4:好的,我有一个仅匹配第二部分的解决方案,我没有进行过多的测试,但它似乎有效。我允许foo包含任何字符,但不包括空格(和换行符,我想),我猜可以将其进一步限制为a-zA-z0-9和“-”,所以请随意根据您的需要更改。负责仅匹配foo部分的代码是:
("\\bdefine-and-bind-command\s\\([^\s]*\\)" 1 'font-lock-function-name-face t)
将这段代码插入在上面函数中另一个字体锁定关键字的行之后,然后就可以使用了。这个正则表达式匹配 'define-and-bind-command' 单词开头(\b表示)后跟着一个空格,然后返回(字体锁定)直到下一个空格为止的所有内容。
希望这能帮到你!