Spec-Zone.ru › Elisp

Создание кнопок

Кнопки связываются с областью текста с помощью оверлея или свойств текста, в которых хранятся специфичные для кнопки сведения; все они инициализируются из типа кнопки (по умолчанию используется встроенный тип кнопки button). Как и для всего текста Emacs, внешний вид кнопки определяется свойством face; по умолчанию (за счёт свойства face, унаследованного от типа кнопки button) это простое подчёркивание, как у обычной ссылки на веб-странице.

Для удобства предусмотрено два вида функций создания кнопок: одни добавляют свойства кнопки к существующей области буфера и называются make-...button, а другие также вставляют текст кнопки и называются insert-...button.

Все функции создания кнопок принимают аргумент &rest properties, который должен быть последовательностью пар свойство значение, задающих свойства, добавляемые к кнопке; см. раздел Свойства кнопок. Кроме того, ключевой аргумент :type можно использовать, чтобы указать тип кнопки, от которого наследуются другие свойства; см. раздел Типы кнопок. Все свойства, явно не указанные при создании, будут унаследованы от типа кнопки (если этот тип определяет такое свойство).

Следующие функции добавляют кнопку, используя оверлей (см. раздел Оверлеи) для хранения свойств кнопки:

Функция: make-button beg end &rest properties

Эта функция создаёт кнопку от beg до end в текущем буфере и возвращает её.

Функция: insert-button label &rest properties

Эта функция вставляет в точке кнопку с меткой label и возвращает её.

Следующие функции похожи на предыдущие, но для хранения свойств кнопки используют свойства текста (см. раздел Свойства текста). Такие кнопки не добавляют в буфер маркеры, поэтому редактирование буфера не замедляется, даже если кнопок очень много. Однако, если у текста уже есть свойство текста face (например, face, назначенный режимом Font Lock), face кнопки может быть не виден. Обе эти функции возвращают начальную позицию новой кнопки.

Функция: make-text-button beg end &rest properties

Эта функция создаёт кнопку от beg до end в текущем буфере, используя свойства текста.

Функция: insert-text-button label &rest properties

Эта функция вставляет в точке кнопку с меткой label, используя свойства текста.

Функция: buttonize string callback &optional data

Иногда удобнее превратить строку в кнопку, не вставляя её сразу в буфер, например при создании структур данных, которые можно вставить в буфер позднее. Эта функция превращает string в такую строку, а при щелчке пользователя по кнопке вызывается callback. Необязательный параметр data используется как параметр при вызове callback. Если nil, вместо него в качестве параметра используется кнопка.

Функция: buttonize-region start end callback &optional data help-echo

Иногда удобнее преобразовать существующий текст в буфере в кнопку, чем вставлять новый текст. Эта функция превращает область между start и end в кнопку. Аргументы callback и data имеют те же значения, что и для buttonize. Необязательный аргумент help-echo используется как свойство help-echo кнопки.

Функция: unbuttonize-region start end

Эта функция удаляет все кнопки между start и end в текущем буфере (как основанные на оверлеях, так и основанные на свойствах текста).

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Making-Buttons.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API