Spec-Zone.ru › Elisp

Автосохранение

Emacs периодически сохраняет все файлы, которые вы посещаете; это называется автосохранением. Автосохранение предотвращает потерю более чем ограниченного объема работы в случае сбоя системы. По умолчанию автосохранение происходит каждые 300 нажатий клавиш или после приблизительно 30 секунд бездействия. См. Автосохранение: Защита от катастроф в Руководстве по GNU Emacs для информации об автосохранении для пользователей. Здесь мы описываем функции, используемые для реализации автосохранения, и переменные, которые их контролируют.

Переменная: buffer-auto-save-file-name

Эта локальная для буфера переменная является именем файла, используемого для автосохранения текущего буфера. Она равна nil, если буфер не должен автосохраняться.

buffer-auto-save-file-name
     ⇒ "/xcssun/users/rms/lewis/#backups.texi#"
Команда: auto-save-mode arg

Это командный режим для режима Автосохранения, локального для буфера вспомогательного режима. При включенном режиме Автосохранения автосохранение включено в буфере. Способ вызова аналогичен другим командам вспомогательных режимов (см. Правила вспомогательных режимов).

В отличие от большинства вспомогательных режимов, нет переменной auto-save-mode. Режим Автосохранения включен, если buffer-auto-save-file-name не nil и buffer-saved-size (см. ниже) отлична от нуля.

Переменная: auto-save-file-name-transforms

Эта переменная перечисляет преобразования, которые необходимо применить к имени файла буфера перед созданием имени файла автосохранения.

Каждое преобразование — это список вида (regexp replacement [uniquify]). regexp — это регулярное выражение для сопоставления с именем файла; если оно соответствует, replace-match используется для замены соответствующей части на replacement. Если необязательный элемент uniquify не равен nil, имя файла автосохранения строится путем конкатенации части пути к преобразованному имени файла с именем файла буфера, в котором все разделители путей были заменены на ‘!’ для предотвращения конфликтов. (Это не будет работать правильно, если ваша файловая система обрезает полученное имя.)

Если uniquify является одним из членов secure-hash-algorithms, Emacs строит непутевую часть имени файла автосохранения, применяя это secure-hash к имени файла буфера. Это предотвращает любые риски чрезмерно длинных имён файлов.

Все преобразования в списке выполняются в указанном порядке. Когда одно преобразование применяется, его результат окончательный; дальнейшие преобразования не применяются.

Значение по умолчанию настроено на размещение файлов автосохранения удалённых файлов в временном каталоге (см. Уникальные имена файлов).

На файловых системах MS-DOS без длинных имён эта переменная всегда игнорируется.

Функция: auto-save-file-name-p filename

Эта функция возвращает значение отличное от nil, если filename — это строка, которая может быть именем файла автосохранения. Она предполагает обычную систему именования для файлов автосохранения: имя, начинающееся и заканчивающееся диезами (‘#’) — это возможное имя файла автосохранения. Аргумент filename не должен содержать пути.

(make-auto-save-file-name)
     ⇒ "/xcssun/users/rms/lewis/#backups.texi#"
(auto-save-file-name-p "#backups.texi#")
     ⇒ 0
(auto-save-file-name-p "backups.texi")
     ⇒ nil
Функция: make-auto-save-file-name

Эта функция возвращает имя файла, используемого для автосохранения текущего буфера. Это просто имя файла с диезами (‘#’) перед и после него. Эта функция не проверяет переменную auto-save-visited-file-name (описанную ниже); вызывающие функции должны сначала проверить эту переменную.

(make-auto-save-file-name)
     ⇒ "/xcssun/users/rms/lewis/#backups.texi#"
Пользовательский параметр: auto-save-visited-file-name

Если эта переменная не nil, Emacs автосохраняет буферы в файлы, которые они посещают. То есть автосохранение выполняется в том же файле, который вы редактируете. Обычно эта переменная равна nil, поэтому файлы автосохранения имеют разные имена, создаваемые make-auto-save-file-name.

При изменении значения этой переменной новое значение не вступает в силу в существующем буфере до следующего включения режима автосохранения в нём. Если режим автосохранения уже включен, автосохранения продолжают производиться в том же имени файла до тех пор, пока auto-save-mode не будет вызвано снова.

Обратите внимание, что установка этой переменной в значение отличное от nil не меняет тот факт, что автосохранение отличается от сохранения буфера; например, хуки, описанные в Сохранение буферов, не запускаются при автосохранении буфера.

Функция: recent-auto-save-p

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

Функция: set-buffer-auto-saved

Эта функция помечает текущий буфер как автосохранённый. Буфер не будет больше автосохраняться до следующего изменения текста буфера. Функция возвращает nil.

Пользовательский параметр: auto-save-interval

Значение этой переменной определяет частоту автоматического сохранения в терминах количества событий ввода. Каждый раз, когда будет прочитано столько дополнительных событий ввода, Emacs выполняет автоматическое сохранение для всех буферов, в которых это включено. Установка значения 0 отключает автоматическое сохранение, основанное на количестве набранных символов.

Пользовательский параметр: auto-save-timeout

Значение этой переменной — количество секунд бездействия, после которого выполняется автоматическое сохранение. Каждый раз, когда пользователь приостанавливается на это время, Emacs выполняет автоматическое сохранение для всех буферов, в которых это включено. (Если текущий буфер большой, указанный таймаут умножается на коэффициент, который увеличивается по мере увеличения размера; для буфера в один миллион байт коэффициент почти равен 4.)

Если значение равно нулю или nil, автоматическое сохранение по бездействию не выполняется, только после определенного количества событий ввода, как указано в auto-save-interval.

Переменная: auto-save-hook

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

Пользовательский параметр: auto-save-default

Если эта переменная имеет значение, отличное от nil, буферы, посещающие файлы, имеют автоматическое сохранение по умолчанию. В противном случае — нет.

Команда: do-auto-save &optional no-message current-only

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

Если какие-либо буферы были сохранены автоматически, do-auto-save обычно отображает сообщение «Сохранение...» в области эха во время выполнения автоматического сохранения. Однако, если no-message имеет значение, отличное от nil, сообщение подавляется.

Если current-only имеет значение, отличное от nil, сохраняется только текущий буфер.

Функция: delete-auto-save-file-if-necessary &optional force

Эта функция удаляет файл автоматического сохранения текущего буфера, если delete-auto-save-files имеет значение, отличное от nil. Она вызывается каждый раз при сохранении буфера.

Если force имеет значение, отличное от nil, эта функция удаляет файл только в том случае, если он был записан текущей сессией Emacs с момента последнего истинного сохранения.

Пользовательский параметр: delete-auto-save-files

Эта переменная используется функцией delete-auto-save-file-if-necessary. Если она имеет значение, отличное от nil, Emacs удаляет файлы автоматического сохранения при выполнении истинного сохранения (в посещаемом файле). Это экономит место на диске и упорядочивает вашу директорию.

Функция: rename-auto-save-file

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

Переменная: buffer-saved-size

Значение этой буферной локальной переменной — длина текущего буфера при последнем чтении, сохранении или автоматическом сохранении. Это используется для обнаружения существенного уменьшения размера и отключения автоматического сохранения в ответ.

Если это -1, это означает, что автоматическое сохранение временно выключено в этом буфере из-за существенного уменьшения размера. Явное сохранение буфера сохраняет положительное значение в этой переменной, тем самым снова включая автоматическое сохранение. Отключение или включение режима автоматического сохранения также обновляет эту переменную, чтобы забыть о существенном уменьшении размера.

Если это -2, это означает, что этот буфер должен игнорировать изменения размера буфера; в частности, он не должен временно отключать автоматическое сохранение из-за изменений размера буфера.

Переменная: auto-save-list-file-name

Эта переменная (если не nil) указывает файл для записи имен всех файлов автоматического сохранения. Каждый раз, когда Emacs выполняет автоматическое сохранение, он записывает две строки в этот файл для каждого буфера, в котором включено автоматическое сохранение. Первая строка содержит имя посещаемого файла (пустая, если у буфера нет), а вторая — имя файла автоматического сохранения.

При нормальном завершении работы Emacs удаляет этот файл; если Emacs зависает, вы можете посмотреть в этот файл, чтобы найти все файлы автоматического сохранения, которые могли содержать работу, которая иначе была бы потеряна. Команда recover-session использует этот файл для их поиска.

Имя по умолчанию для этого файла задаёт ваш домашний каталог и начинается с «.saves-». Также включает идентификатор процесса Emacs и имя хоста.

Пользовательский параметр: auto-save-list-file-prefix

После того, как Emacs прочитал ваш файл инициализации, он инициализирует auto-save-list-file-name (если вы ещё не установили его в отличное от nil) на основе этого префикса, добавляя имя хоста и идентификатор процесса. Если вы установите это значение в nil в файле инициализации, Emacs не будет инициализировать auto-save-list-file-name.

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/Auto_002dSaving.html

Spec-Zone.ru

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