Когда вы определяете пользовательский параметр с помощью defcustom, вы должны указать его тип настройки. Это объект Lisp, который описывает (1)
какие значения допустимы и (2) как отображать значение в
буфере настройки для редактирования.
Вы указываете тип настройки в defcustom с
ключевым словом :type. Аргумент :type вычисляется, но
только один раз при выполнении defcustom, поэтому он не подходит
для значения, которое должно меняться. Обычно мы используем заключенную в кавычки константу. Например:
(defcustom diff-command "diff" "Команда, используемая для запуска diff." :type '(string) :group 'diff)
В общем случае, тип настройки — это список, первый элемент которого — символ, один из имен типов настройки, определенных в следующих разделах. После этого символа следует ряд аргументов, в зависимости от символа. Между символом типа и его аргументами вы можете опционально указать пары ключ-значение (см. Ключевые слова типов).
Некоторые символы типов не используют аргументов; они называются
простыми типами. Для простого типа, если вы не используете
пары ключ-значение, вы можете опустить скобки вокруг символа типа. Например, просто string в качестве типа настройки эквивалентно (string).
Все типы настройки реализованы как виджеты; см. Введение в Библиотека виджетов Emacs для получения подробной информации.