Emacs Lispの各パッケージには、 そのパッケージのすべてのオプション、フェイス、他のグループを含んだ 1つの主要なカスタマイズグループがあるべきです。 パッケージに少数のオプションやフェイスしかなければ、 それらを1つのグループにまとめます。 12個を超えるオプションやフェイスがある場合には、 それらを下位グループに構造化して、 下位グループすべてをパッケージの主カスタマイズグループに入れておきます。 パッケージの主グループに下位グループとともにいくつかのオプションやフェイスを 入れておくのもよいでしょう。
パッケージの主グループや単一のグループは、
標準カスタマイズグループの1つかそれ以上のメンバであるべきです。
(それらの完全な一覧を表示するにはM-x customizeを使う。)
それらの中から1個か数個を選び(多すぎないこと)、
キーワード:group
を使って、それぞれに読者のグループを追加します。
新たなカスタマイズグループは、defgroup
で宣言します。
membersを含むカスタマイズグループとしてgroupを宣言する。 シンボルgroupをクォートしないこと。 引数docは、グループの説明文字列を指定する。
引数membersは、グループのメンバとなる カスタマイズ項目の初期集合を指定するリストである。 しかし、ほとんどの場合、membersは
nil
であり、 それらのメンバを定義するときに、キーワード:group
を使って、 グループのメンバであることを指定する。membersでグループのメンバを指定する場合には、 各要素は
(
name widget)
という形式であること。 ここで、nameはシンボル、 widgetはそのシンボルを編集するためのウィジェット型である。 有用なウィジェットは、変数に対してはcustom-variable
、 フェイスに対してはcustom-face
、 グループに対してはcustom-group
である。共通のキーワード(see Common Keywords)に加えて、
defgroup
ではつぎのキーワードも使える。
:prefix
prefix- グループ内の項目の名前がprefixで始まるときには、 その項目に対するタグを(デフォルトでは)prefixを省略して作る。
1つのグループに
prefix
がいくつあってもよい。
接頭辞を取りさる機能は、現在、オフにしてあります。
つまり、:prefix
は、現在、なんの効果もありません。
このようにしたのは、指定した接頭辞を取りさると、
オプション名がしばしば混乱するからです。
さまざまなグループのdefgroup
定義を書く人は、
論理的と考えられるとき、つまり、ライブラリに共通の接頭辞があるときには
キーワード:prefix
を追加するので、このようになるのです。
:prefix
を使ってよい結果を得るには、
グループ内の特定の項目とそれらの名前と説明文字列に関して、
特定の接頭辞を取りさった場合の効果を調べる必要があります。
その結果、テキストがわかり難ければ、
その場面では、:prefix
を使うべきではないのでしょう。
カスタマイズグループすべてを調べ直して、
わかり難くなる結果をもたらす:prefix
指定を削除し、
この機能をオンにすることは、誰かが頑張れば、可能です。