33.21 Регистры

Регистр — это своего рода переменная, используемая в редактировании Emacs, которая может хранить различные типы значений. Каждый регистр называется одним символом. Все символы ASCII и их мета-варианты (за исключением C-g) могут использоваться для именования регистров. Таким образом, существует 255 возможных регистров. В Emacs Lisp регистр обозначается символом, который является его именем.

Переменная: register-alist

Эта переменная является alist элементами вида (имя . содержимое). Обычно для каждого использованного регистра Emacs есть один элемент.

Объект имя — это символ (целое число), идентифицирующий регистр.

Содержимое содержимое регистра может иметь несколько возможных типов:

число

Число представляет само себя. Если insert-register находит число в регистре, оно преобразуется в десятичное представление.

маркер

Маркер представляет позицию буфера, к которой нужно перейти.

строка

Строка — это текст, сохраненный в регистре.

прямоугольник

Прямоугольник представлен списком строк.

(window-configuration position)

Это представляет конфигурацию окна для восстановления в одном фрейме и позицию для перехода в текущем буфере.

(frame-configuration position)

Это представляет конфигурацию фрейма для восстановления и позицию для перехода в текущем буфере. Конфигурации фреймов также известны как framesets.

(file filename)

Это представляет файл для посещения; переход к этому значению посещает файл filename.

(file-query filename position)

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

(buffer buffer-name)

Это представляет буфер; переход к этому значению переключается на буфер buffer-name.

Функции в этом разделе возвращают непредсказуемые значения, если не указано иначе.

Функция: get-register reg

Эта функция возвращает содержимое регистра reg или nil, если он не содержит содержимого.

Функция: set-register reg value

Эта функция устанавливает содержимое регистра reg в value. Регистр может быть установлен в любое значение, но другие функции регистров ожидают только определенные типы данных. Возвращаемое значение — это value.

Команда: view-register reg

Эта команда отображает содержимое регистра reg.

Команда: insert-register reg &optional beforep

Эта команда вставляет содержимое регистра reg в текущий буфер.

Обычно эта команда ставит точку перед вставленным текстом, а маркер после него. Однако, если необязательный второй аргумент beforep не равен nil, она ставит маркер перед текстом, а точку после.

При интерактивном вызове команда по умолчанию ставит точку после текста, а аргумент префикса инвертирует это поведение.

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

Если регистр содержит что-то, кроме сохраненного текста (строки) или прямоугольника (списка), происходят в настоящее время бесполезные вещи. Это может быть изменено в будущем.

Функция: register-read-with-preview prompt

Эта функция считывает и возвращает имя регистра, запрашивая prompt и возможно показывая предварительный просмотр существующих регистров и их содержимого. Предварительный просмотр отображается во временном окне после задержки, указанной в опции пользователя register-preview-delay, если ее значение и register-alist не равны nil. Предварительный просмотр также показывается, если пользователь запрашивает справку (например, вводит символ справки). Мы рекомендуем использовать эту функцию во всех интерактивных командах, которые считывают имена регистров.