Emacs latex模式/字体锁定:有没有办法获得三(3)级以上的突出显示?

Emacs latex模式/字体锁定:有没有办法获得三(3)级以上的突出显示?,emacs,font-lock,emacs-faces,Emacs,Font Lock,Emacs Faces,在latex模式下,有没有办法获得三(3)级以上的高亮显示 我想控制三个以上级别的突出显示,但是,似乎latex模式可以限制为三(3)个级别。我这样说是因为Emacs在尝试第四级时会抱怨--在重新显示期间出错:(jit lock function 1)发出信号(错误的类型参数listp prepend)。以下只是一个试图控制四(4)个级别的示例,它给出了上面列出的错误消息 (defvar lawlist-face-a (make-face 'lawlist-face-a)) (set-face-

在latex模式下,有没有办法获得三(3)级以上的高亮显示

我想控制三个以上级别的突出显示,但是,似乎latex模式可以限制为三(3)个级别。我这样说是因为Emacs在尝试第四级时会抱怨--
在重新显示期间出错:(jit lock function 1)发出信号(错误的类型参数listp prepend)
。以下只是一个试图控制四(4)个级别的示例,它给出了上面列出的错误消息

(defvar lawlist-face-a (make-face 'lawlist-face-a))
(set-face-attribute 'lawlist-face-a nil :foreground "orange")

(defvar lawlist-face-b (make-face 'lawlist-face-b))
(set-face-attribute 'lawlist-face-b nil :foreground "cyan")

(defvar lawlist-face-c (make-face 'lawlist-face-c))
(set-face-attribute 'lawlist-face-c nil :foreground "blue")

(defvar lawlist-face-d (make-face 'lawlist-face-d))
(set-face-attribute 'lawlist-face-d nil :foreground "red")


(font-lock-add-keywords 'latex-mode '(

("\\(\\\\begin\\|\\\\end\\)\\(\{\\)\\(document\\)\\(\}\\)" (1 lawlist-face-a) (2 lawlist-face-b) (3 lawlist-face-c) (4 lawlist-face-d) prepend)

))

我尝试添加
(setq字体锁定支持模式'惰性锁定模式)
,这导致冻结。我还尝试添加
(setq font-lock-maximum-decoration t)
,这似乎没有任何明显的效果。

前面的
原子需要在引用的列表之外,作为
字体锁的最后一个参数添加关键字

(font-lock-add-keywords
 'latex-mode
 '(("\\(\\\\begin\\|\\\\end\\)\\(\{\\)\\(document\\)\\(\}\\)" (1 lawlist-face-a) (2 lawlist-face-b) (3 lawlist-face-c) (4 lawlist-face-d)))
 'prepend)

今天我注意到,如果有其他可能冲突的定义,有时需要在每个自定义面后面添加字母
t
,例如,
begin
当然是,最常见的命令之一和自定义颜色需要额外的
t
,才能使一切正常工作。
字体锁定添加关键字的第三个参数控制如何将这些关键字添加到现有关键字。通过使用非nil(而非
),关键字将附加到现有集,即与prepend相反。另一方面,
prepend
可以在规则中用于告诉字体锁将其颜色添加到其他现有颜色之前,但是,您需要为每个高亮显示规则指定它,如
(1 lawlist-face-a prepend)(2 lawlist-face-b prepend).