Spec-Zone.ru › Elisp

Именование резервных файлов

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

Функция: 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

Spec-Zone.ru

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