15.1 Общие ключевые слова элементов

Объявления настройки, которые мы опишем в следующих нескольких разделах — defcustom, defgroup и т. д. — все принимают аргументы ключевых слов (см. Переменные, которые никогда не меняются) для указания различной информации. В этом разделе описываются ключевые слова, применимые ко всем типам объявлений настройки.

Все эти ключевые слова, кроме :tag, могут использоваться более один раз в одном элементе. Каждое использование ключевого слова имеет независимый эффект. Ключевое слово :tag является исключением, поскольку любой элемент может отображать только одно имя.

:tag label

Используйте label, строку, вместо имени элемента, чтобы пометить элемент в меню настройки и буферах. Не используйте тег, который существенно отличается от реального имени элемента; это вызовет путаницу.

:group group

Поместите этот элемент настройки в группу group. Если это ключевое слово отсутствует в элементе настройки, он будет помещен в ту же группу, которая была последней определена (в текущем файле).

Когда вы используете :group в defgroup, это делает новую группу подгруппой group.

Если вы используете это ключевое слово более одного раза, вы можете поместить один элемент в более одной группы. Отображение любой из этих групп покажет этот элемент. Пожалуйста, не злоупотребляйте этим, так как результат будет неприятным.

Включите внешнюю ссылку после строки документации для этого элемента. Это предложение, содержащее кнопку, которая ссылается на другую документацию.

Существует несколько альтернатив, которые вы можете использовать для link-data:

(custom-manual info-node)

Ссылка на узел Info; info-node — это строка, которая указывает имя узла, как в "(emacs)Top". Ссылка появляется как ‘[Manual]’ в буфере настройки и вызывает встроенный читатель Info по info-node.

(info-link info-node)

Подобно custom-manual, за исключением того, что ссылка появляется в буфере настройки с именем узла Info.

(url-link url)

Ссылка на веб-страницу; url — это строка, которая указывает URL. Ссылка появляется в буфере настройки как url и вызывает браузер WWW, указанный browse-url-browser-function.

(emacs-commentary-link library)

Ссылка на раздел комментариев библиотеки; library — это строка, которая указывает имя библиотеки. См. Конвенциональные заголовки для библиотек Emacs.

(emacs-library-link library)

Ссылка на файл библиотеки Emacs Lisp; library — это строка, которая указывает имя библиотеки.

(file-link file)

Ссылка на файл; file — это строка, которая указывает имя файла, который будет посещен с помощью find-file, когда пользователь вызывает эту ссылку.

(function-link function)

Ссылка на документацию функции; function — это строка, которая указывает имя функции, которую нужно описать с помощью describe-function, когда пользователь вызывает эту ссылку.

(variable-link variable)

Ссылка на документацию переменной; variable — это строка, которая указывает имя переменной, которую нужно описать с помощью describe-variable, когда пользователь вызывает эту ссылку.

(face-link face)

Ссылка на документацию фейса; face — это строка, которая указывает имя фейса, который нужно описать с помощью describe-face, когда пользователь вызывает эту ссылку.

(custom-group-link group)

Ссылка на другую группу настройки. Вызов создает новый буфер настройки для group.

Вы можете указать текст, который будет использоваться в буфере настройки, добавив :tag name после первого элемента link-data; например, (info-link :tag "foo" "(emacs)Top") создает ссылку на руководство Emacs, которая появляется в буфере как ‘foo’.

Вы можете использовать это ключевое слово более одного раза, чтобы добавить несколько ссылок.

:load file

Загрузить файл file (строка) перед отображением этого элемента настройки (см. Загрузка). Загрузка выполняется с помощью load и только если файл еще не загружен.

:require feature

Выполнить (require 'feature) при сохранении настроек, если значение этого элемента установлено. feature должен быть символом.

Наиболее частая причина использования :require возникает, когда переменная включает функцию, например, режим, и простое установка переменной не даст никакого эффекта, если не загружен код, реализующий этот режим.

:version version

Это ключевое слово указывает, что элемент был впервые представлен в версии Emacs version, или что его значение по умолчанию было изменено в этой версии. Значение version должно быть строкой.

:package-version '(package . version)

Это ключевое слово указывает, что элемент был впервые представлен в версии version пакета package, или что его значение или значение по умолчанию было изменено в этой версии. Это ключевое слово имеет приоритет над :version.

package должен быть официальным именем пакета, как символом (например, MH-E). version должен быть строкой. Если пакет package выпускается как часть Emacs, package и version должны появиться в значении customize-package-emacs-version-alist.

Пакеты, распространяемые как часть Emacs, которые используют ключевое слово :package-version, также должны обновлять переменную customize-package-emacs-version-alist.

Переменная: customize-package-emacs-version-alist

Этот список предоставляет сопоставление версий Emacs, связанных с версиями пакета, перечисленными в ключевом слове :package-version. Его элементы:

(package (pversion . eversion)…)

Для каждого package, который является символом, есть один или более элементов, содержащих версию пакета pversion с связанной версией Emacs eversion. Эти версии — строки. Например, пакет MH-E обновляет этот список следующим образом:

(add-to-list 'customize-package-emacs-version-alist
             '(MH-E ("6.0" . "22.1") ("6.1" . "22.1") ("7.0" . "22.1")
                    ("7.1" . "22.1") ("7.2" . "22.1") ("7.3" . "22.1")
                    ("7.4" . "22.1") ("8.0" . "22.1")))

Значение package должно быть уникальным и должно соответствовать значению package, появляющемуся в ключевом слове :package-version. Поскольку пользователь может увидеть это значение в сообщении об ошибке, хорошим выбором является официальное имя пакета, такое как MH-E или Gnus.