2013-05-19 24 views
0

乳膠模式,有什麼辦法可以獲得超過三(3)級突出顯示?latex-mode/font-lock:以任何方式獲取超過三(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),這似乎沒有任何明顯的效果。

回答

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) 
+0

這一切固定 - 謝謝你這麼多!!!!! – lawlist

+0

我今天已經注意到,如果有其他定義可能會發生衝突,例如「begin」當然是最常見的命令之一併且自定義顏色之一,那麼在每個自定義面後面添加字母「t」是必要的需要額外的't'使一切正常工作。 – lawlist

+1

你在這裏混淆了兩件事。 'font-lock-add-keywords'的第三個參數控制了這些關鍵字被添加到現有關鍵字的方式。通過使用非零(而不是'set'),關鍵字被*附加到現有集合,即* prepend *的相反部分。另一方面,'prepend'可以用在一個規則裏面來告訴font-lock在其他現有顏色前添加它的顏色,然而,你需要爲每個高亮規則指定它,如'(1 lawlist-面對一個前置)(2法律名單 - 面臨b前置)......。 – Lindydancer

相關問題