Previous: Applying Customizations, Up: Customization [Contents][Index]
カスタムテーマ(Custom themes)とはユニットとして有効または無効にできるセッティングのコレクションです。Custom Themes in The GNU Emacs Manualを参照してくださいカスタムテーマはそれぞれEmacs Lispソースファイルにより定義され、それらはこのセクションで説明する慣習にしたがう必要があります。(カスタムファイルを手で記述するかわりに、カスタマイズ風のインターフェイスを使用して作成することもできます。Creating Custom Themes in The GNU Emacs Manualを参照してください。)
カスタムファイルはfoo-theme.elのように命名すべきです。ここでfooはテーマの名前です。このファイルでの最初のLispフォームはdeftheme
の呼び出しで、最後のフォームはprovide-theme
にすべきです。
このマクロはカスタムテーマの名前としてtheme(シンボル)を宣言します。オプション引数docは、そのテーマを説明する文字列であるべきです。この文字列はユーザーがdescribe-theme
コマンドを呼び出したり、‘*Custom
Themes*’バッファーで?をタイプしたときに表示されます。
2つの特別なテーマ名は禁止されています(それらを使用するとエラーになります)。user
は、そのユーザーの直接的なカスタマイズ設定を格納するための“ダミー”のテーマです。そしchanged
はカスタムシステムの外で行われた変更を格納するための“ダミー”のテーマです。
このマクロは完全に仕様が定められたテーマ名themeを宣言します。
deftheme
とprovide-theme
の違いは、そのテーマセッティングを規定するLispフォーム(通常はcustom-theme-set-variables
の呼び出し、および/またはcustom-theme-set-faces
の呼び出し)です。
この関数は、カスタムテーマthemeの変数のセッティングを規定します。themeはシンボルです。args内の各引数はフォームのリストです。
(var expression [now [request [comment]]])
ここでリストエントリーはcustom-set-variables
のときと同じ意味をもちます。Applying Customizationsを参照してください。
この関数は、カスタムテーマthemeのフェイスのセッティングを規定します。themeはシンボルです。args内の各引数はフォームのリストです。
(face spec [now [comment]])
ここでリストエントリーはcustom-set-faces
のときと同じ意味をもちます。Applying Customizationsを参照してください。
原則的に、テーマファイルは他のLispフォームを含むこともでき、それらはそのテーマがロードされるときに評価されるでしょうが、これは“悪いフォーム”です。悪意のあるコードを含むテーマのロードを防ぐために、最初に非ビルトインテーマをロードする前に、Emacsはソースファイルを表示して、ユーザーにたいして確認を求めます。
以下の関数は、テーマをプログラム的に有効または無効にするのに有用です:
この関数はtheme(シンボル)がカスタムテーマの名前の場合(たとえば、そのテーマが有効かどうかにかかわらず、カスタムテーマがEmacsにロードされていれば)、非nil
をリターンします。それ以外はnil
をリターンします。
この変数の値は、Emacsにロードされたテーマのリストです。テーマはそれぞれ、Lispシンボル(テーマ名)により表されます。この変数のデフォルト値は、2つの“ダミーテーマ”を含みます:
(user
changed)
。changed
テーマには、カスタムテーマが適用される前に行われたセッティング(たとえばカスタムの外部での変数のセット)が格納されています。user
テーマには、そのユーザーがカスタマイズして保存したセッティングが格納されています。deftheme
マクロで宣言された任意の追加テーマは、このリストの先頭に追加されます。
この関数はthemeという名前のカスタムテーマを、変数custom-theme-load-path
で指定されたディレクトリーを探して、ソースファイルからロードします。Custom
Themes in The GNU Emacs
Manualを参照してください。また、そのテーマの変数とフェイスのセッティングが効果を及ぼすようにテーマをenablesにします(オプション引数no-enableが非nil
でない場合)さらに、オプション引数no-confirmが非nil
でない場合は、そのテーマをロードする前にユーザーに確認を求めます。
この関数はthemeという名前のカスタムテーマを有効にします。そのようなテーマがロードされていない場合は、エラーをシグナルします。
この関数はthemeという名前のカスタムテーマを無効にします。テーマはロードされたまま残りので、続けてenable-theme
を呼び出せばテーマは再び有効になります。