以降のセクションで説明するカスタマイゼーション宣言(customization declaration) —
defcustom
、defgroup
などはすべてさまざまな情報を指定するためのキーワード引数(変更不可な変数を参照)を受け取ります。このセクションではカスタマイゼーション宣言のすべての種類に適用されるキーワードを説明します。
:tag
以外のすべてのキーワードは、与えられたアイテムにたいして複数回使用できます。キーワードの使用はそれぞれ独立した効果をもちます。例外は:tag
で、これはすべての与えられたアイテムは1つの名前だけを表示できるからです。
:tag label
¶labelを使用すると、カスタマイゼーションメニュー(customization menu)とカスタマイゼーションバッファー(customization buffer)のアイテムのラベルづけに、そのアイテムの名前のかわりに指定された文字列を使用します。混乱を招くのでそのアイテムの実際の名前と大きく異なる名前は使用しないでください。
:group group
¶このカスタマイゼーションアイテムをグループgroupにputする。カスタマイゼーションアイテムからこのキーワードが欠落していると、アイテムは最後に定義された同じグループ内に配置されるだろう。
defgroup
内で:group
を使用すると、そのアイテムは新しいグループ(:group
のサブグループ)になる。
このキーワードを複数回使用すると、1つのアイテムを複数のグループに配置することができる。それらのグループのいずれかを表示すると、このアイテムが表示される。煩雑になるので多用しないこと。
:link link-data
¶このアイテムのドキュメント文字列の後に外部リンクを含める。これは他のドキュメントを参照するセンテンスを含んだボタンである。
link-dataに使用できる複数の選択肢がある:
(custom-manual info-node)
infoノードへのリンク。info-nodeは"(emacs)Top"
のような、ノード名を示す文字列である。このリンクはカスタマイゼーションバッファーの‘[Manual]’に表示され、info-nodeにたいしてビルトインのinfoリーダーを起動する。
(info-link info-node)
custom-manual
と同様だが、カスタマイゼーションバッファーにはそのinfoノード名が表示される。
(url-link url)
ウェブページヘのリンク。urlはURLを指定する文字列である。カスタマイゼーションバッファーに表示されるリンクはbrowse-url-browser-function
で指定されたWWWブラウザーを呼び出す。
(emacs-commentary-link library)
ライブラリーのコメントセクション(commentary section)へのリンク。libraryはライブラリー名を指定する文字列である。Emacsライブラリーのヘッダーの慣習を参照のこと。
(emacs-library-link library)
Emacs Lispライブラリーファイルへのリンク。libraryはライブラリー名を指定する文字列である。
(file-link file)
ファイルへのリンク。fileはユーザーがこのリンクを呼び出したときにfind-file
でvisitするファイルの名前を指定する文字列である。
(function-link function)
関数のドキュメントへのリンク。functionはユーザーがこのリンクを呼び出したときにdescribe-function
で説明を表示する関数の名前を指定する文字列である。
(variable-link variable)
変数のドキュメントへのリンク。variableはユーザーがこのリンクを呼び出したときにdescribe-variable
で説明を表示する変数の名前を指定する文字列である。
(face-link face)
フェイスのドキュメントへのリンク。faceはユーザーがこのリンクを呼び出したときにdescribe-face
で説明を表示する関数の名前を指定する文字列である。
(custom-group-link group)
他のカスタマイゼーショングループへのリンク。このリンクを呼び出すことによりgroupにたいする新たなカスタマイゼーションバッファーが作成される。
link-dataの1つ目の要素の後に:tag
name
を追加することにより、カスタマイゼーションバッファーで使用するテキストを指定できます。たとえば(info-link
:tag "foo" "(emacs)Top")
は、そのバッファーで‘foo’と表示されるEmacs manualへのリンクを作成します。
複数のリンクを追加するために、このキーワードを複数回使用することができます。
:load file
¶そのカスタマイゼーションアイテムを表示する前にファイルfileをロードする(ロードを参照)。ロードはload
により行われ、そのファイルがまだロードされていないときだけロードを行う。
:require feature
¶保存したカスタマイゼーションがこのアイテム値をセットするとき、(require
'feature)
が実行される。featureはシンボル。
:require
を使用するもっとも一般的な理由は、ある変数がマイナーモードのような機能を有効にするとき、そのモードを実装するコードがロードされていなければ、変数のセットだけでは効果がないからである。
:version version
¶このキーワードはそのアイテムが最初に導入されたEmacsバージョンversionか、そのアイテムのデフォルト値がそのバージョンで変更されたことを指定する。値versionは文字列でなければならない。
:package-version '(package . version)
¶このキーワードはそのアイテムが最初に導入されたpackageのバージョンversionか、アイテムの意味(またはデフォルト値)が変更されたバージョンを指定する。このキーワードは:version
より優先される。
packageにはそのパッケージの公式名をシンボルとして指定すること(たとえばMH-E
)。versionには文字列であること。パッケージpackageがEmacsの一部としてリリースされたなら、packageとversionの値はcustomize-package-emacs-version-alist
の値に表示されるはずである。
Emacsの一部として配布された:package-version
キーワードを使用するパッケージは、customize-package-emacs-version-alist
変数も更新しなければなりません。
これは:package-version
キーワード内でリストされたパッケージのバージョンに関連付けられたEmacsのバージョンにたいして、マッピングを提供するalistである。このalistの要素は:
(package (pversion . eversion)...)
それぞれのpackage(シンボル)にたいして、パッケージバージョンpversionを含む1つ以上の要素と、それに関連付けられるEmacsバージョンeversionが存在する。これらのバージョンは文字列である。たとえばMH-Eパッケージは以下によりalistを更新する:
(add-to-list 'customize-package-emacs-version-alist '(MH-E ("6.0" . "22.1") ("6.1" . "22.1") ("7.0" . "22.1") ("7.1" . "22.1") ("7.2" . "22.1") ("7.3" . "22.1") ("7.4" . "22.1") ("8.0" . "22.1")))
packageの値は一意である必要があり、:package-version
キーワード内に現れるpackageの値とマッチする必要がある。おそらくユーザーはエラーメッセージからこの値を確認するので、MH-EやGnusのようなパッケージの公式名を選択するのがよいだろう。