在 emacs lisp 模式下,我想以一种颜色突出显示所有函数调用,并以另一种颜色突出显示所有引用的符号。例如,在 中(foo 1 2 'bar)
,foo 应该突出显示颜色 1,而 'bar 应该突出显示颜色 2。
我可以使用下面的代码做到这一点,但是,当引用列表时,它也会突出显示列表中的第一个符号。例如, in '(nil a b c)
, nil 不应作为函数调用突出显示,并且该列表中的所有项目都应突出显示为带引号的符号(颜色 2)。
(defface font-lock-func-face
'((nil (:foreground "#6fc2ef"))
(t (:bold t :italic t)))
"Font Lock mode face used for function calls."
:group 'font-lock-highlighting-faces)
(defface font-lock-quoted-face
'((nil (:foreground "#e1a3ee"))
(t (:bold t :italic t)))
"Font Lock mode face used for function calls."
:group 'font-lock-highlighting-faces)
(font-lock-add-keywords
'emacs-lisp-mode
'(("(\\s-*\\(\\_<\\(?:\\sw\\|\\s_\\)+\\)\\_>"
1 'font-lock-func-face)))
(font-lock-add-keywords
'emacs-lisp-mode
'(("'[-a-zA-Z_][-a-zA-Z0-9_]*\\>" 0 'font-lock-quoted-face)))
还有一张我在这里看到的图片:http: //imgur.com/Iluku05