15.2 Определение групп настройки

Каждый пакет Emacs Lisp должен иметь одну основную группу настройки, которая содержит все параметры, лица и другие группы пакета. Если в пакете небольшое количество параметров и лиц, используйте одну группу и поместите в неё всё. Когда параметров и лиц больше двадцати или около того, следует структурировать их в подгруппы и помещать подгруппы под основную группу настройки пакета. Допустимо помещать некоторые параметры и лица в основную группу пакета наряду с подгруппами.

Основная или единственная группа пакета должна быть членом одной или нескольких стандартных групп настройки. (Чтобы отобразить их полный список, используйте M-x customize.) Выберите одну или несколько из них (но не слишком много) и добавьте вашу группу в каждую из них с помощью ключа :group.

Способ объявления новых групп настройки — с помощью defgroup.

Макрос: defgroup group члены doc [ключ значение]…

Объявляет 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.

Пользовательский параметр: custom-unlispify-remove-prefixes

Если эта переменная не равна nil, префиксы, заданные ключом :prefix группы, опускаются из имён меток, когда пользователь настраивает группу.

Значение по умолчанию — nil, т. е. функция удаления префиксов отключена. Это связано с тем, что удаление префиксов часто приводит к запутанным именам параметров и лиц.