Аббревиатуры и раскрытие аббревиатур
Аббревиатура, или сокращение, — это строка символов, которую можно раскрыть в более длинную строку. Пользователь может вставить строку сокращения, и она будет автоматически заменена раскрытой формой сокращения. Это позволяет меньше печатать.
Набор действующих сокращений хранится в таблице сокращений. У каждого буфера есть локальная таблица сокращений, но обычно все буферы в одном основном режиме используют общую таблицу сокращений. Кроме того, существует глобальная таблица сокращений. Обычно используются обе таблицы.
Таблица сокращений представлена в виде obarray. См. Создание и интернирование символов, где приведены сведения об obarray. Каждое сокращение представлено символом в obarray. Имя символа — это сокращение; его значение — раскрытая форма; его определение функции — это функция-хук, выполняющая раскрытие (см. Определение сокращений); а его ячейка списка свойств содержит различные дополнительные свойства, включая счётчик использования и число раскрытий сокращения (см. Свойства сокращений).
Некоторые сокращения, называемые системными сокращениями, определяются основным режимом, а не пользователем. Системное сокращение определяется по его свойству не-nil :system (см. Свойства сокращений). При сохранении сокращений в файл системные сокращения не сохраняются. См. Сохранение сокращений в файлах.
Поскольку символы, используемые для сокращений, не интернируются в обычном obarray, они никогда не появятся в результате чтения выражения Lisp; фактически обычно они используются только кодом, который обрабатывает сокращения. Поэтому их безопасно использовать нестандартным образом.
Если включён второстепенный режим Abbrev mode, буферная переменная abbrev-mode является не-nil, и сокращения автоматически раскрываются в буфере. Команды для работы с сокращениями на уровне пользователя см. в разделе Режим Abbrev в Руководстве GNU Emacs.
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/Abbrevs.html