39.1 Таблицы сокращений

В этом разделе описывается, как создавать и манипулировать таблицами сокращений.

Функция: make-abbrev-table &optional props

Эта функция создает и возвращает новую, пустую таблицу сокращений — obarray, не содержащий символов. props — это список свойств, который применяется к новой таблице (см. Свойства таблиц сокращений).

Функция: abbrev-table-p object

Эта функция возвращает не-nil значение, если object является таблицей сокращений.

Функция: clear-abbrev-table abbrev-table

Эта функция удаляет все сокращения в abbrev-table, оставляя ее пустой.

Функция: copy-abbrev-table abbrev-table

Эта функция возвращает копию abbrev-table — новую таблицу сокращений, содержащую те же определения сокращений. Она не копирует списки свойств; копируются только имена, значения и функции.

Функция: define-abbrev-table tabname definitions &optional docstring &rest props

Эта функция определяет tabname (символ) как имя таблицы сокращений, то есть как переменную, значение которой является таблицей сокращений. Она определяет сокращения в таблице в соответствии с definitions, списком элементов вида (abbrevname expansion [hook] [props...]). Эти элементы передаются как аргументы в define-abbrev.

Необязательная строка docstring — это строка документации переменной tabname. Список свойств props применяется к таблице сокращений (см. Свойства таблиц сокращений).

Если эта функция вызывается более одного раза для одного и того же tabname, последующие вызовы добавляют определения из definitions к tabname, а не перезаписывают все исходное содержимое. (Последующий вызов переопределяет только сокращения, явно переопределенные или не определенные в definitions.)

Переменная: abbrev-table-name-list

Это список символов, значения которых являются таблицами сокращений. define-abbrev-table добавляет новое имя таблицы сокращений в этот список.

Функция: insert-abbrev-table-description name &optional human

Эта функция вставляет перед точкой описание таблицы сокращений с именем name. Аргумент name — это символ, значение которого является таблицей сокращений.

Если human не равен nil, описание ориентировано на человека. Системные сокращения перечислены и обозначены как таковые. В противном случае описание представляет собой выражение Lisp — вызов define-abbrev-table, который определил бы name в его текущем виде, но без системных сокращений. (Мод или пакет, использующий name, должен добавить их к name отдельно.)