39 Аббревиатуры и раскрытие аббревиатур

Аббревиатура, или abbrev, — это строка символов, которая может быть раскрыта в более длинную строку. Пользователь может ввести строку-аббревиатуру и увидеть, как она автоматически заменяется на раскрытие аббревиатуры. Это экономит набор текста.

Набор аббревиатур, действующих в данный момент, хранится в таблице аббревиатур. Каждый буфер имеет локальную таблицу аббревиатур, но обычно все буферы в одном основном режиме используют одну общую таблицу аббревиатур. Существует также глобальная таблица аббревиатур. Обычно используются обе.

Таблица аббревиатур представлена как обаррей (obarray). См. Создание и интернирование символов для получения информации об обарреях. Каждая аббревиатура представлена символом в обаррее. Имя символа — это аббревиатура; его значение — это раскрытие; его определение функции — это функция-обработчик для выполнения раскрытия (см. Определение аббревиатур); а его ячейка списка свойств содержит различные дополнительные свойства, включая счётчик использований и количество раскрытий аббревиатуры (см. Свойства аббревиатур).

Некоторые аббревиатуры, называемые системными аббревиатурами, определяются основным режимом, а не пользователем. Системная аббревиатура идентифицируется по её ненулевому свойству :system (см. Свойства аббревиатур). При сохранении аббревиатур в файл аббревиатур системные аббревиатуры опускаются. См. Сохранение аббревиатур в файлах.

Поскольку символы, используемые для аббревиатур, не интернируются в обычном обаррее, они никогда не появятся в результате чтения Lisp-выражения; на самом деле, обычно они никогда не используются, кроме как кодом, обрабатывающим аббревиатуры. Поэтому их можно безопасно использовать нестандартным способом.

Если включён минорный режим Abbrev mode, переменная abbrev-mode, локальная для буфера, имеет ненулевое значение, и аббревиатуры автоматически раскрываются в буфере. О командах пользовательского уровня для аббревиатур см. Режим Abbrev в Руководстве по GNU Emacs.