簡體   English   中英

在Modeline中針對特定次要模式的自定義顏色

[英]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-allminor-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM