Posted at

Emacsのテーマを改造する

More than 3 years have passed since last update.


この記事でやること

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