Spec-Zone.ru › Elisp

Определение сокращений

define-abbrev — это базовая функция низкого уровня для определения сокращения в таблице сокращений.

При определении системного сокращения основным режимом следует вызвать define-abbrev и указать t для свойства :system. Обратите внимание, что любые сохранённые несистемные сокращения восстанавливаются при запуске, то есть до загрузки некоторых основных режимов. Поэтому основные режимы не должны предполагать, что их таблицы сокращений пусты при первой загрузке.

Функция: define-abbrev имя-таблицы-сокращений расширение &опциональный-хак &остальные-свойства

Эта функция определяет сокращение с именем имя в таблице-сокращений для расширения до расширения и вызова хак со свойствами свойства (см. Свойства сокращений). Возвращаемое значение — имя. Свойство :system в свойства обрабатывается здесь особо: если у него значение force, то оно перепишет существующее определение, даже для несистемного сокращения с тем же именем.

Имя должно быть строкой. Аргумент расширение обычно представляет собой желаемое расширение (строка) или nil для отмены определения сокращения. Если это что-то, кроме строки или nil, то сокращение расширяется только путём выполнения хак.

Аргумент хак — это функция или nil. Если хак не nil, он вызывается без аргументов после того, как сокращение заменено на расширение; указатель находится в конце расширения, когда вызывается хак.

Если хак — это символ, не являющийся nil, а его свойство no-self-insert не nil, хак может явно управлять вставкой символа ввода, который сработал для расширения. Если хак возвращает не nil в этом случае, вставка символа запрещена. Напротив, если хак возвращает nil, expand-abbrev (или abbrev-insert) также возвращает nil, как если бы расширение не произошло.

Обычно define-abbrev устанавливает переменную abbrevs-changed в t, если оно фактически меняет сокращение. Это делается для того, чтобы некоторые команды могли предложить сохранить сокращения. Это не делается для системного сокращения, так как они всё равно не сохраняются.

Вариант пользователя: only-global-abbrevs

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

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

Spec-Zone.ru

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