この記事でやること
既存のテーマをベースにして、改造したオリジナルのテーマを作る。themeフレームワークはEmacs24以降なので、それより前のバージョンは想定しない。
きっかけ
長らく darcula-theme を使っていたのだが、型名の色が暗すぎて見づらい(下画像のMainWindowViewModel : ViewModelの部分)ので、明るくしたいと思った。

カスタムテーマのパスの設定
仮にここでは~/.emacs/themeディレクトリとする。読者の環境に合わせて自由に置き換えること。
以下の記述をinit.elなどに記述する。
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
(setq custom-theme-directory "~/.emacs.d/themes")
後でテストしやすいように、一度Emacsを再起動して上記の定義を読みこませるか、scratchバッファで評価しておくと良い。
カスタムテーマの設定
まず、ベースにしたいテーマを現在のEmacsに適用し、M-x customize-create-themeを実行する。現在のテーマをベースにするかどうかをミニバッファで聞かれるので、y を入力する。
すると、以下のようなCustom Themeバッファが表示される。
まずはTheme nameを設定する。今回はdarculaがベースなので、とりあえずdarcula-modifiedとしておく(末尾に-themeが付与されるので、入力するのはテーマ名本体のみで良い)。
今回は Font Lock Type Face を編集したいので、当該項目の左側にある▷をクリックすると、実際の定義が表示されるようになる(各項目のサンプルが右側に表示されているので、変えたい部分の色を目印にすると見つけやすい)。
ここの :foreground "#4e807d" の部分を書き換えることで、型名の色が変化する。今回は明るい緑色mediumseagreen #3cb371に設定する。
すべての設定が終了したら、「Save Theme」のボタンをクリックすることで、~/.emacs.d/themes/darcula-modified-theme.elに保存される(保存先のパスは、先ほどcustom-theme-directoryで設定した)。ためしにscratchバッファで(load-theme 'darcula-modified)を実行すると、先ほど作成したテーマの内容が表示され、本当に読み込んでよいかを確認される。yを入力すると、実際にテーマが適用されるので、適当なファイルを開いて色が変化していることを確認する。今回の例だと、以下のように色が変化している(最初のスクリーンショットと比較してほしい)。
気に入らなければ、Custom Themeバッファに戻って変更をやりなおすことができる。
テーマの読み込み設定
いままで(require 'darcula-theme)としていた部分を(load-theme 'darcula-modified t)とする。第二引数のtは、読み込みの確認をしないという意味で、これを指定しないとEmacsを立ち上げるたびに先ほどの読み込み確認が表示される。
Emacsを再起動して適当なファイルを開き、修正したテーマが適用されていればすべての手順が成功している。
まとめ
- カスタムテーマを配置するディレクトリとして
custom-theme-load-pathを設定する - Emacsのテーマを編集するには
customize-create-themeを使う - テーマの保存先は
custom-theme-directoryで設定する - テーマを読み込むには、
load-themeを使う


