Определение сокращений
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