latex-mode / font-lock:获得超过三(3)级突出显示的任何方式?

时间:2013-05-19 17:45:56

标签: emacs font-lock emacs-faces

使用latex-mode,有没有办法获得超过三(3)个突出显示级别?

我想控制超过三个级别的突出显示,但是,似乎乳胶模式可能限制为三(3)个级别。我这样说是因为Emacs在尝试第四级时抱怨 - Error during redisplay: (jit-lock-function 1) signaled (wrong-type-argument 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 font-lock-support-mode 'lazy-lock-mode),导致冻结。我也尝试添加(setq font-lock-maximum-decoration t),这似乎没有任何明显的效果。

1 个答案:

答案 0 :(得分:2)

prepend原子需要在引用列表之外,作为font-lock-add-keywords的最后一个参数:

(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)