この記事でやること
既存のテーマをベースにして、改造したオリジナルのテーマを作る。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
を使う