在emacs lisp模式中,我想强调所有函数调用一种颜色,所有引用符号另一种颜色。例如,在(foo 1 2 'bar)
中,foo应突出显示颜色1,'bar应突出显示颜色2。
我能够使用下面的代码执行此操作,但是,当引用列表时,它也会突出显示列表中的第一个符号。例如,在'(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
答案 0 :(得分:1)
答案的第一部分:包lisp-extra-font-lock突出显示引用的表达式。
它还强调:
let
,pcase
等约束的函数和变量的参数列表中的变量。它通过使用不同的颜色区分正常局部变量和defvar
定义的全局变量。 / LI>
,
- 和,@
- 转义的子表达式)答案的第二部分:
如果您使用lisp-extra-font-lock
软件包,则在启用软件包后,如果您将其添加为 last 规则,则突出显示功能的规则会在您发布时起作用。这样它就不会覆盖任何其他亮点:
(font-lock-add-keywords
'emacs-lisp-mode
'(("(\\s-*\\(\\_<\\(?:\\sw\\|\\s_\\)+\\)\\_>"
1 'font-lock-func-face))
'append) ;; <-- Add after all other rules