カスタムテーマ(Custom themes)は、1つの単位として有効または無効にできる、セッティングのコレクションです。カスタムテーマを使用して、さまざまなセッティングコレクション間を簡単に切り替えることができ、あるコンピューターから別のコンピューターへそのようなコレクションを持ち運ぶことができます。
カスタムテーマは、Emacs Lispソースファイルとして保存されています。カスタムテーマの名前がnameなら、そのテーマのファイル名はname-theme.elです。テーマファイルのフォーマットと、それを作成する方法については、カスタムテーマの作成を参照してください。
M-x customize-themesとタイプすると、Emacsが認識するカスタムテーマをリストする、*Custom
Themes*という名前のバッファーに切り替わります。デフォルトでは、Emacsは2つの場所からテーマファイルを探します。1つはcustom-theme-directory
により指定されるディレクトリー(デフォルトは~/.emacs.d/))で、もう1つはEmacsがインストールされた場所(変数data-directory
を参照してください)のetc/themesというディレクトリーです。後者にはEmacsと共に配布されるいくつかのカスタムテーマが含まれており、これらはさまざまなカラースキーム(color
schemes)に適合するように、Emacsフェイスをカスタマイズします(しかし、カスタムテーマの目的はこれだけに制限される必要はなく、変数をカスタマイズするのにも使用できることに注意してください)。
Emacsに他の場所からカスタムテーマを探させたい場合は、リスト変数custom-theme-load-path
にディレクトリーを追加します。この変数のデフォルト値は(custom-theme-directory
t)
です。ここでシンボルcustom-theme-directory
は、変数custom-theme-directory
の値を指定するという特別な意味をもち、t
はビルトインのテーマディレクトリーetc/themesを意味します。custom-theme-load-path
で指定されるディレクトリーにあるテーマが、*Custom
Themes*バッファーにリストされます。
*Custom
Themes*バッファーでは、カスタムテーマの隣のチェックボックスをアクティブにすることにより、カレントEmacsセッションで、そのテーマを有効または無効にできます。カスタムテーマが有効な場合、そのテーマのすべてのセッティング(変数とフェイス)がEmacsセッションで効果をもちます。選択したテーマを将来のEmacsセッションに適用するには、C-x
C-s (custom-theme-save
)とタイプするか、‘[Save Theme
Settings]’ボタンを使用してください。
最初にカスタムテーマを有効にするとき、Emacsはテーマファイルの内容を表示して、本当にロードするか確認を求めます。これはカスタムテーマのロードにより不定なLispコードが実行されるからで、テーマが安全だと判っているときだけyesと答えるべきです。この場合、Emacsは将来のセッションのために、そのテーマが安全だということを記憶するか尋ねます(これは変数custom-safe-themes
にテーマファイルのSHA-256ハッシュ値を保存することにより行なわれます)。すべてのテーマを安全なものとして扱いたい場合は、変数の値をt
)に変更します。(ディレクトリーetc/themesの)Emacsと共に配布されるテーマは、このチェックから除外されていて、常に安全だと判断されます。
カスタムテーマのセッティングと保存は、変数custom-enabled-themes
をカスタマイズすることにより機能します。この変数の値は、カスタムテーマ名(tango
のようなLispシンボル)のリストです。custom-enabled-themes
のセットに*Custom
Themes*バッファーを使用するかわりに、たとえばM-x
customize-optionのような通常のカスタマイズインターフェースを使用して、変数をカスタマイズできます。カスタムテーマ自身では、custom-enabled-themes
をセットできないことに注意してください。
カスタマイズバッファーを通じて行なう任意のカスタマイズは、テーマのセッティングより優先されます。これによりテーマのセッティングを簡単にオーバーライドできます。2つの異なるテーマのセッティングがオーバーラップする場合には、custom-enabled-themes
で先に指定されたテーマが優先されます。カスタマイズバッファーでは、カスタムテーマによりセッティングがデフォルトから変更されているときは、‘State’には‘STANDARD’ではなく‘THEMED’が表示されます。
M-x load-themeとタイプすることにより、カレントEmacsセッションで特定のカスタムテーマを有効にできます。これはテーマ名の入力を求め、テーマファイルからテーマをロードし、それを有効にします。すでにテーマファイルがロードされているときは、M-x enable-themeとタイプすることにより、ファイルをロードせずにテーマを有効にできます。カスタムテーマを無効にするには、M-x disable-themeとタイプしてください。
カスタムテーマの説明を見るには、*Custom Themes*バッファーのその行で、?とタイプするか、Emacsの任意のバッファーでM-x describe-themeとタイプしてテーマ名を入力してください。
一部のテーマには変種(lightとdarkの2つのみの場合が多い)があります。M-x theme-choose-variantを使えば他の変種に切り替えることができます。カレントでアクティブなテーマの変種が1種類しかなければ、そのテーマが選択されます。2つ以上の変種がある場合には、どれに切り替えるか入力を求めます。
theme-choose-variant
はアクティブなテーマが単一の場合のみ機能することに注意してください。