Spec-Zone.ru › Elisp

Поддержание списков отмены

В этом разделе описывается, как включить и выключить информацию об отмене для заданного буфера. Также объясняется, как список отмены автоматически усекается, чтобы он не становился слишком большим.

Запись информации об отмене в недавно созданном буфере обычно включена по умолчанию; но если имя буфера начинается с пробела, запись отмены изначально отключена. Вы можете явно включить или отключить запись отмены с помощью следующих двух функций или, установив buffer-undo-list.

Команда: buffer-enable-undo &optional buffer-or-name

Эта команда включает запись информации об отмене для буфера buffer-or-name, чтобы последующие изменения можно было отменить. Если аргумент не указан, используется текущий буфер. Эта функция ничего не делает, если запись отмены уже включена в буфере. Она возвращает nil.

В интерактивном вызове buffer-or-name — это текущий буфер. Вы не можете указать какой-либо другой буфер.

Команда: buffer-disable-undo &optional buffer-or-name

Эта функция отбрасывает список отмены для buffer-or-name и отключает дальнейшую запись информации об отмене. В результате больше невозможно отменить предыдущие изменения или любые последующие изменения. Если список отмены для buffer-or-name уже отключен, эта функция не имеет эффекта.

В интерактивном вызове BUFFER-OR-NAME — это текущий буфер. Вы не можете указать какой-либо другой буфер. Эта функция возвращает nil.

По мере продолжения редактирования списки отмены становятся все длиннее и длиннее. Чтобы предотвратить использование всего доступного места в памяти, сборка мусора обрезает их до установленных вами предельных размеров. (Для этих целей размер списка отмены измеряется в ячейках cons, составляющих список, плюс строки удаленного текста.) Три переменные контролируют диапазон допустимых размеров: undo-limit, undo-strong-limit и undo-outer-limit. В этих переменных размер подсчитывается как количество занимаемых байт, что включает как сохраненный текст, так и другие данные.

Пользовательский параметр: undo-limit

Это мягкий предел для допустимого размера списка отмены. Группа изменений, при превышении которой этого размера, — это последняя сохраняемая группа.

Пользовательский параметр: undo-strong-limit

Это верхний предел для допустимого размера списка отмены. Группа изменений, при превышении которой этого размера, отбрасывается (вместе со всеми более старыми группами изменений). Есть одно исключение: самая последняя группа изменений отбрасывается только в том случае, если она превышает undo-outer-limit.

Пользовательский параметр: undo-outer-limit

Если во время сборки мусора информация об отмене для текущей команды превышает этот предел, Emacs отбрасывает информацию и отображает предупреждение. Это последний предел для предотвращения переполнения памяти.

Пользовательский параметр: undo-ask-before-discard

Если эта переменная не nil, когда информация об отмене превышает undo-outer-limit, Emacs спрашивает в области эха, нужно ли отбрасывать информацию. Значение по умолчанию — nil, что означает автоматическое отбрасывание.

Этот параметр предназначен в основном для отладки. Сборка мусора приостанавливается, пока вопрос не задан, что означает, что Emacs может утечь память, если пользователь слишком долго ждет, прежде чем ответить на вопрос.

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/Maintaining-Undo.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API