Кнопки ассоциируются с областью текста, используя оверлей или
свойства текста для хранения информации, специфичной для кнопки, причем
вся эта информация инициализируется из типа кнопки (который по умолчанию
устанавливается в встроенный тип кнопки button). Как и весь
текст Emacs, внешний вид кнопки определяется свойством face;
по умолчанию (через свойство face, унаследованное от
типа кнопки button) это простая подчеркивание, как у
типичной ссылки на веб-странице.
Для удобства существуют два вида функций создания кнопок: те, которые
добавляют свойства кнопки к существующей области буфера, называемые
make-...button, и те, которые также вставляют текст
кнопки, называемые insert-...button.
Все функции создания кнопок принимают аргумент &rest
properties, который должен быть последовательностью пар
свойство значение, указывающих свойства, которые следует
добавить к кнопке; см. Свойства кнопок.
Кроме того, может использоваться ключевой аргумент :type,
чтобы указать тип кнопки, от которого следует наследовать другие свойства;
см. Типы кнопок. Любые свойства,
не указанные явно во время создания, будут унаследованы от типа кнопки
(если тип определяет такое свойство).
Следующие функции добавляют кнопку с использованием оверлея (см. Оверлеи) для хранения свойств кнопки:
Эта функция создает кнопку из beg до end в текущем буфере и возвращает ее.
Эта функция вставляет кнопку с меткой label в текущую позицию и возвращает ее.
Следующие функции аналогичны, но используют свойства текста (см. Свойства текста) для хранения свойств кнопки. Такие кнопки не добавляют маркеров в буфер, поэтому редактирование в буфере не замедляется, даже если существует чрезвычайно большое количество кнопок. Однако, если на тексте есть существующее свойство текста, связанное с цветовой схемой (например, свойство, назначенное режимом Font Lock), свойство кнопки может быть невидимым. Обе эти функции возвращают начальную позицию новой кнопки.
Эта функция создает кнопку из beg до end в текущем буфере, используя свойства текста.
Эта функция вставляет кнопку с меткой label в текущую позицию, используя свойства текста.
Иногда удобнее преобразовать строку в кнопку, не вставляя ее
сразу в буфер, например, при создании структур данных, которые могут
позже быть вставлены в буфер. Эта функция преобразует string
в такую строку, и callback будет вызвана, когда пользователь
нажмет на кнопку. Необязательный параметр data будет
использоваться в качестве параметра, когда вызывается callback.
Если nil, в качестве параметра используется сама кнопка.
Иногда удобнее преобразовать существующий текст в буфере в кнопку,
а не вставлять новый текст. Эта функция преобразует область между
start и end в кнопку. Аргументы
callback и data имеют то же значения, что и
для buttonize. Необязательный аргумент help-echo
используется как свойство help-echo кнопки.