2012-10-23 39 views
0

純粹爲了眼睛的糖果原因,我希望在模式行中顯示一個次要模式有'((()))'(沒有單引號)。特定次要模式的模式行中的自定義顏色

這是爲rainbow-delimiters-mode。到目前爲止,我在我的的.emacs下,它的工作原理:

(setq minor-mode-alist (cons '(rainbow-delimiters-mode " ((()))") minor-mode-alist)) 

但是現在我想使用的模式行內三種不同的顏色,以便在我的模式行括號「反映」了什麼彩虹分隔符模式。

我應該怎麼辦? (我不關心匹配的實際顏色rainbow-delimiters-mode顏色使用)

+0

糾正我,如果我錯了,所以問題是:「如何在模式行中獲取不同的文本顏色?」 – PascalVKooten

+0

@Dualinity:不同字符的不同顏色,每個描述相同的次要模式:)我已經可以將顏色分配給模式行中的一個次要模式(例如Paredit),但我不知道該怎麼做對於單個次要模式的每個字符。 –

+1

聽起來像是一個非常具體的小事情。儘管如果我必須打賭任何程序都可以,Emacs將是您的選擇:P現在您只需要一些Emacs嚮導... – PascalVKooten

回答

1

這將做到這一點,在Emacs 24.2.1測試:

(setq minor-mode-alist 
     `((rainbow-delimiters-mode " ") 
     (rainbow-delimiters-mode #("(" 0 1 (face rainbow-delimiters-depth-1-face))) 
     (rainbow-delimiters-mode #("(" 0 1 (face rainbow-delimiters-depth-2-face))) 
     (rainbow-delimiters-mode #("(" 0 1 (face rainbow-delimiters-depth-3-face))) 
     (rainbow-delimiters-mode #(")" 0 1 (face rainbow-delimiters-depth-3-face))) 
     (rainbow-delimiters-mode #(")" 0 1 (face rainbow-delimiters-depth-2-face))) 
     (rainbow-delimiters-mode #(")" 0 1 (face rainbow-delimiters-depth-1-face))) 
     ,@(assq-delete-all 'rainbow-delimiters-mode minor-mode-alist))) 

它使用字符串屬性的顏色來增加次要模式指示符#("(" 0 1 (face foo-face))"語法指定一個字符字符串,face屬性設置爲foo-face範圍[0,1)。

由於一個字符串可以有很多屬性,人們希望能夠爲每個字符指定具有不同面的單個minor-mode-alist條目。但是,由於大概是Emacs錯誤,在顯示模式行時,只有次要模式指示符的第一個字符的屬性才受到尊重。爲了解決這個問題,代碼利用了Emacs爲同一模式合併多個minor-mode-alist指標的事實。它爲rainbow-delimiters-mode指定了幾個字符串,它們各自的顏色,並使用assq-delete-allminor-mode-alist中刪除舊的彩虹分隔符條目。

爲了完整起見,這裏是單一入口代碼,因爲它的第一個字符沒有指定的臉出現無色在Emacs 24.2.1:

(setq minor-mode-alist 
     `((rainbow-delimiters-mode #(" ((()))" 
            1 2 (face rainbow-delimiters-depth-1-face) 
            2 3 (face rainbow-delimiters-depth-2-face) 
            3 4 (face rainbow-delimiters-depth-3-face) 
            4 5 (face rainbow-delimiters-depth-3-face) 
            5 6 (face rainbow-delimiters-depth-2-face) 
            6 7 (face rainbow-delimiters-depth-1-face))) 
     ,@(assq-delete-all 'rainbow-delimiters-mode minor-mode-alist))) 
+0

也適用於Emacs 24.1.50.1:)閃亮的眼睛糖果! –