使用乳胶模式,是否有办法获得超过三(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)
,但似乎没有任何明显的效果。
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)