バッファのモードに応じて (Elisp ColorTheme パッケージを使用して) 自動的に異なるカラー テーマを使用するように Emacs に指示するにはどうすればよいですか?
一部の色テーマは、コードの編集時にうまく機能しますが、Dired+、TERM、またはシェル モードでは機能しません。
ありがとう
バッファごとに個別のカラーテーマを設定することはできないようですが、フレームごとに設定することはできます。フレームごとのカラー テーマを設定する手順については、 http://www.emacswiki.org/emacs/ColorTheme#toc8 を参照してください。
モードのロード時にロードフックを使用してカラーテーマを自動的に変更できますが、その変更はすべてのバッファに適用されます。
ロード フックを使用してモードをロードするときに、カラー テーマを変更できます。例えば
(add-hook 'dired-mode-hook 'color-theme-emacs-nw)
編集:これは、別の色のテーマを使用して新しいフレームでシェルを開く関数です:
(defun my-shell ()
(interactive)
(let ((color-theme-is-global nil))
(select-frame (make-frame))
(color-theme-gnome)
(shell)))
パッケージload-theme-buffer-local
(またはcolor-theme-buffer-local.el
emacs 24 より前のテーマを使用している場合) は、バッファーごとに異なるフェイスを設定できます。ただし、背景は同じままです。
次のようにモードフックできます。
(add-hook 'js2-mode-hook (lambda nil (load-theme-buffer-local 'tango (current-buffer))))
パッケージは、MELPA ( M-x install-package RET load-theme-buffer-local
)、ソース、およびgithub の readme で入手できます。
私はzenburnの色を使用しています
(setq font-lock-maximum-decoration (quote ((dired-mode . nil) (t . t))))
私にはうまくいきませんでしたが、
(setq font-lock-maximum-decoration (quote ((dired-mode) (t . t))))
2011/01/04 にリリースされたバージョンの dired+ で完全に動作します。
私は過去にターミナルで読めないdiredバッファで同じ問題に直面しました。回避策として、Mx Customize-Option font-lock-maximum-decoration; を実行しました。変数を構成ファイルに直接設定することもできます(setq font-lock-maximum-decoration (quote ((dired-mode . nil) (t . t))))
。これは、dired に対してデフォルトの装飾を使用し、それ以外のすべてに対して最大の装飾を使用します (これがデフォルト設定でした)。詳細については実行してくださいC-h v font-lock-maximum-decoration
。
これは質問に正確に答えるものではありません-バッファごとまたはモードごとのカラーテーマを使用できるかどうかはわかりませんが、根本的な問題を解決するのに役立つかもしれません.