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))"
構文では、[0, 1) の範囲のface
プロパティが設定された 1 文字の文字列を指定します。foo-face
minor-mode-alist
文字列は多くのプロパティを持つことができるため、文字ごとに異なる顔を持つ単一のエントリを指定できると期待されます。ただし、おそらく Emacs のバグにより、モード ラインを表示するときに、マイナー モード インジケーターの最初の文字のプロパティのみが考慮されます。これを回避するために、コードは Emacsminor-mode-alist
が同じモードの複数のインジケーターをマージするという事実を利用しています。に対して、それぞれ独自の色のいくつかの文字列を指定し、から古い虹の区切り文字エントリを削除するためrainbow-delimiters-mode
に使用します。assq-delete-all
minor-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)))