[英]Custom colors in the modeline for a specific minor mode
純粹出於眼神的原因,我想在modeline中顯示一個較小的模式,該模式具有'(((())))'(不帶單引號)。
這是用於rainbow-delimiters-mode
。 到目前為止,我的.emacs文件包含以下內容,並且可以正常運行:
(setq minor-mode-alist (cons '(rainbow-delimiters-mode " ((()))") minor-mode-alist))
但是,現在我想在modeline中使用三種不同的顏色,以便使我的modeline中的括號“反映” rainbow-delimiters-mode的作用。
我應該怎么做? (我不在乎與rainbow-delimiters-mode
使用的實際顏色匹配的顏色)
這將在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-all
從minor-mode-alist
刪除舊的Rainbow分隔符條目。
為了完整起見,這是單項代碼,在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)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.