目次
color-theme とは何か
ここで説明する color-theme とは Emacs の色設定をテーマとして纏めておくことができる Emacs Lisp のライブラリーのことです。公式サイトは以下になります。
http://www.nongnu.org/color-theme/
Emacs は face を設定することで、様々な場所に色を設定することができます。そうして設定した色の組合せをテーマとして保存しておけば、いつでもテーマ切り替えが簡単にできるようになります。
color-theme は最初から 90 ほどのテーマが同梱されており、そこから選択することもできますし、また自分でカスタマイズすることも比較的容易にできます。
環境構築
Emacs 用のライブラリですので、Emacs が動作している前提です。
curl -LO http://download.savannah.gnu.org/releases/color-theme/color-theme-6.6.0.tar.gz
tar xvfz color-theme-6.6.0.tar.gz
cd color-theme-6.6.0
make
Emacs にパスが通っていれば make することでバイトコンパイルされます。color-theme は比較的重いライブラリなので、バイトコンパイルはしておきます。
インストールは make install でも可能ですが、 color-theme-6.6.0 ディレクトリを load-path の通っているディレクトリに手動で移動しても良いでしょう。
設定
Emacs 22 以降は .emacs.d/init.el にて設定します。
以下を init.el に記述して Emacs を再起動すると color-theme の Arjen が設定された状態で起動します。
(require 'color-theme)
(eval-after-load "color-theme"
'(progn
(color-theme-initialize)
(color-theme-arjen)))
どのようなテーマが存在するかは M-x color-theme-<TAB> すれば補完されますので、これで選択することもできます。
具体的な色の結果を見たい場合は、以下のサイトにサンプルがあります。
http://gnuemacscolorthemetest.googlecode.com/svn/html/index-el.html
上記サイトは HTML の色を利用しているので Emacs の色とは多少異なった印象の場合もありますが、参考になるでしょう。
デフォルトでは color-theme-6.6.0 ディレクトリの中の themes フォルダの中になる Emacs Lisp を自動でロードするようになっています。既存のテーマをいろいろ試してみるのも良いでしょう。
起動が遅いと感じる場合は themes フォルダの中の Emacs Lisp を必要な物だけにするなどの工夫をしてみてください。
標準テーマ以外の利用
標準テーマ以外にもテーマが配布されています。代表的なものをいくつか紹介します。
Zenburn
vim 用のテーマを移植した物です。黒系のテーマになります。見た目の雰囲気は以下のサイトをご覧ください。
http://slinky.imukuppi.org/zenburn/
Emacs 用の物は以下で配布されています。
http://www.emacswiki.org/emacs/zenburn.el
ダウンロードして themes フォルダに配置。
(color-theme-zenburn)
で設定できます。
独自のテーマを作成
既存のテーマで満足できない場合は自分独自のテーマを作成することになります。color-theme は自分独自のテーマを作成するのが楽しい物です。
自作する場合はまず、themes フォルダ の中の color-theme-library.el に定義されている color-theme に付属のテーマを見てみると良いでしょう。また themes フォルダ内には color-theme-example.el の名前でテンプレートが入っていますので、それを見るのが一番わかりやすいかもしれません。
筆者もいくつかテーマを作成して利用しています。以下で公開しています。現在は主に color-theme-dark.el を利用しています。
http://bitbucket.org/sakito/dot.emacs.d/src/tip/local-lisp/color-themes/themes/
色に関して
Emacsで設定できる色を知る必要があります。基本的には RGB で指定できる色は全色設定可能です。ただし環境によりますが、普段ブラウザ上で見えている色と微妙に差異がありますので確認した方が良いでしょう。
色名が付与されている色に関しては M-x list-color-display にて一覧を見ることができます。
設定したい部分の face の確認
Emacs では色が設定できる部分には face があります。ただ、いったいどの部分がなんという名前の face なのか不明な場合が多いでしょう。
まずは設定したい部分の face を知る必要があります。
とにかく face の一覧がほしいなら M-x describe-face したあと タブキーで補完すれば一覧が表示されます。
また、色設定したい箇所をポイントして知りたい場合は、init.el に以下のような関数を定義し、色を変更したい部分にカーソルを当て、 M-x describe-face-at-point するとその部分の face名を知ることができます。
(defun describe-face-at-point ()
(interactive)
(message "%s" (get-char-property (point) 'face)))
カーソルが当てられない箇所に関しては 参考資料:主な色設定可能部分の face 一覧 を参照してください。
色の設定
face には以下の項目が設定できます。
属性 | 説明 |
---|---|
foreground | テキストの色 |
background | 背景色の色 |
box | 囲み部分の色 |
weight | フォントのウェイト |
slant | フォントの傾き |
size | フォントのサイズ |
underline | アンダーラインを付けるか否か。デフォルトは nil |
bold | bold体するか否か。デフォルトは nil |
italic | italic体にするか否か。デフォルトは nil |
わたしの例だと mode-line には以下のような設定を記述しています。
(mode-line ((t (:foreground "#bbbbbc" :background "#222222" :box (:line-width 1 :color nil :style released-button)))))
その他の設定に関してはサンプルを実際に見た方が早いでしょう。
あとは地道に色を設定していってください。
参考資料:主な色設定可能部分の face 一覧
一部の環境では設定しても意味がない物もありますが、主な物を参考資料として一覧にしておきます。
face | 説明 |
---|---|
background-color | バッファの背景の色です。一番見る色になるでしょう |
foreground-color | 文字の色になります |
border | Emacs 外周の色 |
cursor | カーソルの色 |
mouse | マウスカーソルの色 |
underline | アンダーラインの色 |
menu | メニューバーやポップアップメニューの色 |
fringe | 折返し記号の色 |
region | 選択範囲の色 |
scroll-bar | スクロールバーの色 |
tool-bar | ツールバーの色 |
tooltip | ツールチップの色 |
header-line | バッファの上部で、スクロールしても動かない部分です。タブ等が表示されます |
mode-line | モードラインの色 |
mode-line-buffer-id | モードラインに表示されているバッファ名の色 |
mode-line-emphasis | モードラインでの強調部の色 |
mode-line-highlight | モードラインでマウスカーソルなどを当てた時の色 |
mode-line-inactive | ウィンドウ分割等をしていて選択されていないウィンドウのモードラインの色 |
whitespace-space | 空白の色 |
trailing-whitespace | 行末の半角スペースの色 |
show-paren-match-face | 対応した括弧の色 |
show-paren-mismatch-face | 対応に失敗している括弧の色 |
action-lock-face | エンターなどでEmacsからなんらかの動作が発生する部位の色。モードによっては http で始まる文字列が自動でブラウザを開いたり等するがその部位の色 |
highlight | ハイライトのデフォルト値です。ハイライト関連の初期値になります |
highlight-current-line | 現在行をハイライトさせた場合の色です。設定しないと highlight が利用されるようです |
isearch | isearchした時マッチした範囲の色 |
isearch-fail | isearchに失敗した時の色 |
isearch-lazy-highlight | isearch-lazyした時のマッチした範囲の色 |
font-lock-builtin-face | 組み込み部の色。モードによって利用される箇所がことなります |
font-lock-comment-face | コメントの色 |
font-lock-comment-delimiter-face | コメントの区切りの色 |
font-lock-constant-face | 定数の色 |
font-lock-doc-face | docの色 |
font-lock-doc-string-face | doc-stringの色 |
font-lock-function-name-face | 関数名の色 |
font-lock-keyword-face | キーワードの色 |
font-lock-preprocessor-face | プリプロセッサの色 |
font-lock-reference-face | 参照している部分の色 |
font-lock-negation-char-face | 文字(char)部分の色 |
font-lock-string-face | 文字列(String)部の色 |
font-lock-type-face | 型の色 |
font-lock-variable-name-face | 変数の色 |
font-lock-warning-face | warning部分の色 |
comint-highlight-input | comint-modeはshell等のコマンドを入力するモード。その入力した値の色 |
comint-highlight-prompt | comint-modeのプロンプト色 |
highlight-changes | changes-mode を有効にした時の変更箇所の色 |
highlight-changes-1 | 1段階目の変更色 |
highlight-changes-2 | 2段階目の変更色 |
highlight-changes-3 | 3段階目の変更色 |
highlight-changes-4 | 4段階目の変更色 |
highlight-changes-5 | 5段階目の変更色 |
highlight-changes-6 | 6段階目の変更色 |
highlight-changes-delete | 削除した場合の変更箇所の色 |
変更履歴
- 2010-09-23: 公開
以下はゲストコメント可能です。名前とメールアドレスは任意の物を入力していただいてかまいません。 blog comments powered by Disqus