Именование резервных файлов
Функции в этом разделе документированы в основном потому, что вы можете настроить соглашения об именовании резервных файлов, переопределяя их. Если вы измените одну, вам, вероятно, придется изменить и остальные.
- Функция: backup-file-name-p filename
-
Эта функция возвращает ненулевое значение, если filename является допустимым именем резервного файла. Она проверяет только имя, а не существование файла с именем filename.
(backup-file-name-p "foo") ⇒ nil(backup-file-name-p "foo~") ⇒ 3Стандартное определение этой функции таково:
(defun backup-file-name-p (file) "Return non-nil if FILE is a backup file \ name (numeric or not)..." (string-match "~\\'" file))
Таким образом, функция возвращает ненулевое значение, если имя файла заканчивается на ‘~’. (Мы используем обратную косую черту, чтобы разделить первую строку строки документации на две строки в тексте, но генерируем только одну строку в самой строке.)
Это простое выражение помещено в отдельную функцию, чтобы его можно было легко переопределить для настройки.
- Функция: make-backup-file-name filename
-
Эта функция возвращает строку, являющуюся именем резервного файла без номера для файла filename. В Unix это просто filename с присоединенной тильдой.
Стандартное определение этой функции на большинстве операционных систем таково:
(defun make-backup-file-name (file) "Create the non-numeric backup file name for FILE..." (concat file "~"))
Вы можете изменить соглашение об именовании резервных файлов, переопределив эту функцию. Следующий пример переопределяет
make-backup-file-nameдля вставки ‘.’ перед добавлением тильды:(defun make-backup-file-name (filename) (expand-file-name (concat "." (file-name-nondirectory filename) "~") (file-name-directory filename)))(make-backup-file-name "backups.texi") ⇒ ".backups.texi~"Некоторые части Emacs, включая некоторые команды Dired, предполагают, что имена резервных файлов заканчиваются на ‘~’. Если вы не следуете этому соглашению, это не вызовет серьезных проблем, но эти команды могут дать нежелательные результаты.
- Функция: find-backup-file-name filename
-
Эта функция вычисляет имя файла для нового резервного файла для filename. Она также может предложить некоторые существующие резервные файлы для удаления.
find-backup-file-nameвозвращает список, CAR которого — имя нового резервного файла, а CDR — список резервных файлов, удаление которых предлагается. Значение также может бытьnil, что означает, что резервную копию не создавать.Две переменные,
kept-old-versionsиkept-new-versions, определяют, какие версии резервных копий следует сохранить. Эта функция сохраняет эти версии, исключая их из CDR возвращаемого значения. См. Нумерованные резервные копии.В этом примере значение указывает, что ~rms/foo.~5~ является именем для нового резервного файла, а ~rms/foo.~3~ является избыточной версией, которую вызывающая функция должна рассмотреть для удаления.
(find-backup-file-name "~rms/foo") ⇒ ("~rms/foo.~5~" "~rms/foo.~3~")
- Функция: file-backup-file-names filename
Эта функция возвращает список всех имён резервных файлов для filename или
nil, если их нет. Файлы сортируются по времени изменения, по убыванию, так что самые последние файлы находятся первыми.
- Функция: file-newest-backup filename
-
Эта функция возвращает первый элемент списка, возвращаемого функцией
file-backup-file-names.Некоторые команды сравнения файлов используют эту функцию, чтобы они могли автоматически сравнивать файл со своей последней резервной копией.
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/Backup-Names.html