次: , 前: Common Keywords, 上: Customization


13.2 カスタマイズグループを定義する

Emacs Lispの各パッケージには、 そのパッケージのすべてのオプション、フェイス、他のグループを含んだ 1つの主要なカスタマイズグループがあるべきです。 パッケージに少数のオプションやフェイスしかなければ、 それらを1つのグループにまとめます。 12個を超えるオプションやフェイスがある場合には、 それらを下位グループに構造化して、 下位グループすべてをパッケージの主カスタマイズグループに入れておきます。 パッケージの主グループに下位グループとともにいくつかのオプションやフェイスを 入れておくのもよいでしょう。

パッケージの主グループや単一のグループは、 標準カスタマイズグループの1つかそれ以上のメンバであるべきです。 (それらの完全な一覧を表示するにはM-x customizeを使う。) それらの中から1個か数個を選び(多すぎないこと)、 キーワード:groupを使って、それぞれに読者のグループを追加します。

新たなカスタマイズグループは、defgroupで宣言します。

— マクロ: defgroup group members doc [keyword value]...

membersを含むカスタマイズグループとしてgroupを宣言する。 シンボルgroupをクォートしないこと。 引数docは、グループの説明文字列を指定する。

引数membersは、グループのメンバとなる カスタマイズ項目の初期集合を指定するリストである。 しかし、ほとんどの場合、membersnilであり、 それらのメンバを定義するときに、キーワード: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指定を削除し、 この機能をオンにすることは、誰かが頑張れば、可能です。