Каждый пакет Emacs Lisp должен иметь одну основную группу настройки, которая содержит все параметры, лица и другие группы пакета. Если в пакете небольшое количество параметров и лиц, используйте одну группу и поместите в неё всё. Когда параметров и лиц больше двадцати или около того, следует структурировать их в подгруппы и помещать подгруппы под основную группу настройки пакета. Допустимо помещать некоторые параметры и лица в основную группу пакета наряду с подгруппами.
Основная или единственная группа пакета должна быть членом одной или нескольких
стандартных групп настройки. (Чтобы отобразить их полный список,
используйте M-x customize.) Выберите одну или несколько из них
(но не слишком много) и добавьте вашу группу в каждую из них с помощью
ключа :group.
Способ объявления новых групп настройки — с помощью defgroup.
Объявляет group как группу настройки, содержащую члены. Не заключайте символ group в кавычки. Аргумент doc задаёт строку документации для группы.
Аргумент члены — это список, задающий начальный набор
элементов настройки, которые будут членами группы. Однако чаще всего
члены равны nil, и вы задаёте членов группы с помощью
ключа :group при определении этих членов.
Если вы хотите задать членов группы через члены, каждый элемент
должен иметь вид (имя виджет). Здесь имя —
это символ, а виджет — это тип виджета для редактирования этого символа.
Полезными виджетами являются custom-variable для переменной,
custom-face для лица и custom-group для группы.
Когда вы вводите новую группу в Emacs, используйте ключ :version
в defgroup; тогда вам не нужно использовать его для
отдельных членов группы.
В дополнение к общим ключам (см. Общие ключевые слова элементов) вы можете
также использовать этот ключ в defgroup:
:prefix префикс ¶Если имя элемента в группе начинается с префикса и настраиваемая
переменная custom-unlispify-remove-prefixes не равна
nil, метка элемента будет опускать префикс. Группа может
иметь любое количество префиксов.
Переменные, лица и подгруппы группы хранятся в свойстве
custom-group символа группы. См. Доступ к свойствам символов. Значением этого свойства является список пар, у которых
car — это символ переменной, лица или подгруппы,
а cdr — один из соответствующих символов
custom-variable, custom-face или custom-group.
Если эта переменная не равна nil, префиксы, заданные ключом
:prefix группы, опускаются из имён меток, когда
пользователь настраивает группу.
Значение по умолчанию — nil, т. е. функция удаления префиксов
отключена. Это связано с тем, что удаление префиксов часто приводит к
запутанным именам параметров и лиц.