Spec-Zone.ru › Elisp

Создание резервных файлов

Функция: backup-buffer

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

Если резервная копия была создана путём переименования, значение возврата — это ячейка списка из трёх элементов: (modes extra-alist backupname), где modes — биты режима исходного файла, возвращаемые file-modes (см. Проверка доступности), extra-alist — список, описывающий расширенные атрибуты исходного файла, возвращаемый file-extended-attributes (см. Расширенные атрибуты), а backupname — имя резервной копии.

Во всех остальных случаях (т. е. если резервная копия создана путём копирования или если резервная копия не создавалась), функция возвращает nil.

Переменная: buffer-backed-up

Эта локальная переменная буфера указывает, был ли файл этого буфера резервирован по причине этого буфера. Если она имеет ненулевое значение, то резервный файл был записан. В противном случае файл должен быть резервирован при следующем сохранении (если резервирование включено). Это постоянная локальная переменная; kill-all-local-variables не изменяет её.

Пользовательский параметр: make-backup-files

Эта переменная определяет, нужно ли создавать резервные файлы. Если она имеет ненулевое значение, Emacs создаёт резервную копию каждого файла при первом сохранении — при условии, что backup-inhibited имеет значение nil (см. ниже).

Следующий пример демонстрирует, как изменить переменную make-backup-files только в буферах Rmail, а не в других. Установка её в nil останавливает создание резервных копий этих файлов, что может сэкономить дисковое пространство. (Вы должны разместить этот код в файле инициализации.)

(add-hook 'rmail-mode-hook
          (lambda () (setq-local make-backup-files nil)))
Переменная: backup-enable-predicate

Значение этой переменной — функция, вызываемая в определённых случаях для определения, должен ли файл иметь резервные копии. Функция получает один аргумент — абсолютный путь к файлу, который нужно рассмотреть. Если функция возвращает nil, резервирование для этого файла отключено. В противном случае другие переменные в этом разделе указывают, как и нужно ли создавать резервные копии.

Значение по умолчанию — normal-backup-enable-predicate, которое проверяет файлы в temporary-file-directory и small-temporary-file-directory.

Переменная: backup-inhibited

Если эта переменная имеет ненулевое значение, резервирование запрещено. Она сохраняет результат проверки backup-enable-predicate на имени посещаемого файла. Её также могут использовать другие механизмы, запрещающие резервирование, основанные на посещаемом файле. Например, VC устанавливает эту переменную в ненулевое значение, чтобы предотвратить создание резервных копий для файлов, управляемых системой управления версиями.

Это постоянная локальная переменная, чтобы при изменении основного режима её значение не потерялось. Основные режимы не должны устанавливать эту переменную — они должны устанавливать make-backup-files вместо неё.

Пользовательский параметр: backup-directory-alist

Значение этой переменной — список пар шаблонов имен файлов и директорий резервных копий. Каждый элемент имеет вид:

(regexp . directory)

Резервные копии файлов, имена которых соответствуют regexp, будут создаваться в directory. directory может быть относительным или абсолютным. Если она абсолютная, все соответствующие файлы резервируются в одну и ту же директорию, а имена файлов в этой директории будут полными именами резервируемых файлов, где все разделители каталогов изменены на ‘!’, чтобы избежать конфликтов. Это не будет работать правильно, если ваша файловая система обрезает полученное имя.

В общем случае, если все резервные копии должны быть в одной директории, в списке должна быть одна пара, сопоставляющая ‘"."’ с соответствующей директорией.

Если эта переменная имеет значение nil (по умолчанию) или не соответствует имени файла, резервная копия создаётся в директории исходного файла.

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

Пользовательский параметр: make-backup-file-name-function

Значение этой переменной — функция, используемая для создания имён резервных файлов. Функция make-backup-file-name её вызывает. См. Именование резервных файлов.

Это может быть локальная переменная буфера для выполнения чего-то специального для определённых файлов. Если вы её измените, вам может потребоваться также изменить backup-file-name-p и file-name-sans-versions.

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/Making-Backups.html

Spec-Zone.ru

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