Emacs Lispパッケージはそれぞれ、1つのメインのカスタマイゼーショングループ(main customization group)をもち、それにはすべてのオプションとフェイス、そのパッケージ内の他のグループが含まれるべきです。そのパッケージに少数のオプションとフェイスしかなければ、1つのグループだけを使用してその中にすべてを配置します。20以上のオプションやフェイスがあるなら、それらをサブグループ内に構造化して、そのサブグループをメインのカスタマイゼーショングループの下に配置します。そのパッケージ内の任意のオプションやフェイスを、サブグループと並行してメイングループに配置しても問題はありません。
そのパッケージのメイングループ(または唯一のグループ)は、1つ以上の標準カスタマイゼーショングループ(standard customization
group)のメンバーであるべきです(これらの完全なリストを表示するにはM-x
customizeを使用する)。それらの内から1つ以上(多すぎないこと)を選択して、:group
を使用してあなたのグループをそれらに追加します。
新しいカスタマイゼーショングループはdefgroup
で宣言します。
membersを含むカスタマイゼーショングループとしてgroupを宣言する。シンボルgroupはクォートしない。引数docはそのグループにたいするドキュメント文字列を指定する。
引数membersはそのグループのメンバーとなるカスタマイゼーションアイテムの初期セットを指定するリストである。しかしほとんどの場合はmembersをnil
にして、メンバーを定義するときに:group
キーワードを使用することによってそのグループのメンバーを指定する。
membersを通じてグループのメンバーを指定したければ、要素はそれぞれ(name
widget)
という形式で指定すること。ここでnameはシンボル、widgetはそのシンボルを編集するウィジェット型(widget
type)である。変数にはcustom-variable
、フェイスにはるcustom-face
、グループにはcustom-group
が有用なウィジェットである。
Emacsに新しいグループを導入するときはdefgroup
内で:version
キーワードを使用する。そうすればグループの個別のメンバーにたいしてそれを使用する必要がなくなる。
一般的なキーワード(一般的なキーワードアイテムを参照)に加えて、defgroup
内では以下のキーワードも使用できる:
:prefix prefix
¶グループ内のアイテムの名前がprefixで始まり、カスタマイズ変数custom-unlispify-remove-prefixes
が非nil
なら、そのアイテムのタグからprefixが省略される。グループは任意の数のプレフィクスをもつことができる。
変数およびグループのサブグループはグループのシンボルのcustom-group
プロパティに格納される。シンボルのプロパティへのアクセスを参照のこと。このプロパティの値はcar
が変数、フェイスまたはサブグループのシンボル、cdr
はそれぞれcustom-variable
、custom-face
、またはcustom-group
のうちいずれかに対応するシンボルであるようなリスト。
この変数が非nil
ならグループの:prefix
キーワードで指定されたプレフィクスは、ユーザーがグループをカスタマイズするときは常にタグ名から省略される。
デフォルト値はnil
、つまりプレフィクス省略(prefix-discarding)の機能は無効となる。これはオプションやフェイスの名前にたいするプレフィクスの省略が混乱を招くことがあるからである。