В типе настройки после символа имени типа можно указать пары «ключевое слово — аргумент». Вот ключевые слова, которые можно использовать, и их значения:
:value значение-по-умолчаниюЗадаёт значение по умолчанию.
Если nil не является допустимым значением для альтернативы, то необходимо указать допустимое значение по умолчанию с помощью :value.
Если вы используете это для типа, который фигурирует как альтернатива внутри choice, это задаёт значение по умолчанию, которое будет использоваться изначально, если и когда пользователь выберет эту альтернативу через меню в буфере настройки.
Разумеется, если фактическое значение параметра соответствует этой альтернативе, будет отображаться фактическое значение, а не значение-по-умолчанию.
:format строка-формата ¶Эта строка будет вставлена в буфер для представления значения, соответствующего типу. В строке-формата доступны следующие управляющие последовательности с ‘%’:
Отображает текст кнопка как кнопку. Атрибут :action задаёт, что будет делать кнопка при активации пользователем; его значение — функция, принимающая два аргумента: виджет, в котором находится кнопка, и событие.
Невозможно задать две разные кнопки с разными действиями.
Показывает образец специальным лицом, заданным :sample-face.
Подставляет значение элемента. Способ представления значения зависит от вида элемента и (для переменных) от типа настройки.
Подставляет строку документации элемента.
Как ‘%d’, но если строка документации длиннее одной строки, добавляет кнопку для переключения между показом всего текста и только первой строки.
Подставляет метку. Метка задаётся ключевым словом :tag.
Отображает буквальный символ ‘%’.
:action действие ¶Выполняет действие, если пользователь щёлкает по кнопке.
Использует лицо (имя лица или список имён лиц) для текста кнопки, отображаемого с помощью ‘%[…%]’.
:button-suffix суффиксЗадают текст, отображаемый до и после кнопки. Каждый может быть:
nilТекст не вставляется.
Строка вставляется буквально.
Используется значение символа.
:tag меткаИспользует метку (строку) как метку для значения (или части значения), соответствующего этому типу. Важно указывать информативную метку для интерфейса настройки, особенно если вы используете тип restricted-sexp или определяете новый тип. См. Определение новых типов.
:doc документация ¶Использует документацию как строку документации для этого значения (или части значения), соответствующего типу. Чтобы это работало, необходимо задать значение для :format и использовать в нём ‘%d’ или ‘%h’.
Обычная причина указания строки документации для типа — предоставить дополнительную информацию о значениях альтернатив внутри типа choice или о частях другого составного типа.
:help-echo текст-подсказки ¶При переходе к этому элементу с помощью widget-forward или widget-backward в области эха будет отображаться строка текст-подсказки. Кроме того, текст-подсказки используется как строка help-echo для мыши и может быть функцией или формой, вычисляемой для получения строки подсказки. Если это функция, она вызывается с одним аргументом — виджетом.
:match функция ¶Задаёт способ определения того, соответствует ли значение типу. Соответствующее значение функция должно быть функцией, принимающей два аргумента (виджет и значение) и возвращающей не nil, если значение приемлемо.
:match-inline функция ¶Задаёт способ определения того, соответствует ли встроенное значение типу. Соответствующее значение функция должно быть функцией, принимающей два аргумента (виджет и встроенное значение) и возвращающей не nil, если значение приемлемо. См. Вставка в списки для получения дополнительной информации о встроенных значениях.
:validate функцияЗадаёт функцию проверки вводимых данных. функция принимает виджет в качестве аргумента и должна возвращать nil, если текущее значение виджета допустимо. В противном случае она должна вернуть виджет, содержащий недопустимые данные, и установить свойство :error этого виджета в строку с объяснением ошибки.
:type-error строка ¶строка должна описывать, почему значение не соответствует типу, согласно функции :match. Когда функция :match возвращает nil, свойство :error виджета будет установлено в строку.