Previous: , Up: Customization   [Contents][Index]


15.6 Customテーマ

Customテーマ(Custom themes)とはユニットとして有効や無効にできるセッティングのコレクションです。Custom Themes in The GNU Emacs Manualを参照してください。CustomテーマはそれぞれEmacs Lispソースファイルにより定義され、それらはこのセクションで説明する慣習にしたがう必要があります(Customテーマを手作業で記述するかわりに、Customize風のインターフェイスを使用して作成することもできる。Creating Custom Themes in The GNU Emacs Manualを参照)。

Customテーマファイルはfoo-theme.elのように命名すること。ここでfooはテーマの名前。このファイルでの最初のLispフォームはdefthemeの呼び出しで、最後のフォームはprovide-themeにすること。

Macro: deftheme theme &optional doc

このマクロはCustomテーマの名前としてtheme(シンボル)を宣言する。オプション引数docは、そのテーマを説明する文字列であること。この文字列はユーザーがdescribe-themeコマンドを呼び出したり、‘*Custom Themes*’バッファーで?をタイプしたときに表示される。

2つの特別なテーマ名は禁止されている(使用するとエラーになる)。userはそのユーザーの直接的なカスタマイズ設定を格納するためのダミーのテーマである。そしchangedはCustomizeシステムの外部で行われた変更を格納するためのダミーのテーマである。

Macro: provide-theme theme

このマクロは完全に仕様が定められたテーマ名themeを宣言する。

defthemeprovide-themeの違いは、そのテーマセッティングを規定するLispフォームです(通常はcustom-theme-set-variablesの呼び出し、および/またはcustom-theme-set-facesの呼び出し)。

Function: custom-theme-set-variables theme &rest args

この関数はCustomテーマthemeの変数のセッティングを規定する。themeはシンボル。args内の各引数はフォームのリスト。

(var expression [now [request [comment]]])

ここでリストエントリーはcustom-set-variablesのときと同じ意味をもつ。Applying Customizationsを参照のこと。

Function: custom-theme-set-faces theme &rest args

この関数はCustomテーマthemeのフェイスのセッティングを規定する。themeはシンボル。args内の各引数はフォームのリスト。

(face spec [now [comment]])

ここでリストエントリーはcustom-set-facesのときと同じ意味をもつ。Applying Customizationsを参照のこと。

原則的にテーマファイルは他のLispフォームを含むこともでき、それらはそのテーマがロードされるときに評価されるでしょうが、これは悪いフォームです。悪意のあるコードを含むテーマのロードを防ぐために最初に非ビルトインテーマをロードする前に、Emacsはソースファイルを表示してユーザーに確認を求めます。このようにテーマは通常のバイトコンパイルは行わずに、Emacsがテーマをロードする際には常にソースファイルが優先されます。

以下の関数は、テーマをプログラム的に有効または無効にするのに有用です:

Function: custom-theme-p theme

この関数はtheme(シンボル)がCustomテーマの名前(たとえばそのテーマが有効かどうかにかかわらず、CustomテーマがEmacsにロードされている)なら非nilをリターンする。それ以外はnilをリターンする。

Variable: custom-known-themes

この変数の値はEmacsにロードされたテーマのリストである。テーマはそれぞれLispシンボル(テーマ名)により表される。この変数のデフォルト値は2つのダミーテーマ(user changed)を含む。changedテーマにはCustomテーマが適用される前に行われたセッティング(たとえばCustomの外部での変数のセット)が格納されている。userテーマにはそのユーザーがカスタマイズして保存したセッティングが格納されている。defthemeマクロで宣言されたすべての追加テーマは、このリストの先頭に追加される。

Command: load-theme theme &optional no-confirm no-enable

この関数はthemeという名前のCustomテーマを、変数custom-theme-load-pathで指定されたディレクトリーから探して、ソースファイルからロードする。Custom Themes in The GNU Emacs Manualを参照のこと。またそのテーマの変数とフェイスのセッティングが効果を及ぼすようにテーマをenablesにする(オプション引数no-enablenilの場合)。さらにオプション引数no-confirmnilなら、そのテーマをロードする前にユーザーに確認を求める。

Command: enable-theme theme

この関数はthemeという名前のCustomテーマを有効にする。そのようなテーマがロードされていなければ、エラーをシグナルする。

Command: disable-theme theme

この関数はthemeという名前のCustomテーマを無効にする。テーマはロードされたまま残るので、続けてenable-themeを呼び出せばテーマは再び有効になる。