Вы можете настроить местоположение через backup-directory-alist
. Каждая запись в списке говорит, куда поместить резервные копии файлов, соответствующих шаблону; если это местоположение nil
, резервная копия будет в том же каталоге, что и оригинал. Порядок имеет значение: используется первое совпадение.
(setq backup-directory-alist '(("-autoloads\\.el\\'")
("." . "~/.emacs.d/backups")))
Если вы хотите полностью запретить резервное копирование на основе имени файла или расположения, похоже, для этого нет встроенного механизма, но его достаточно легко добавить. Переменная backup-enable-predicate
содержит имя функции, которая определяет, должен ли файл иметь резервные копии. Настройка по умолчанию normal-backup-enable-predicate
запрещает резервное копирование только в каталогах, которые Emacs использует для временных файлов. Вы можете добавить свою собственную функцию, которая также проверяет имя файла.
(defvar backup-inhibit-file-name-regexp "-autoloads\\.el\\'"
"Files whose full path matches this regular expression will not be backed up.")
(defun regexp-backup-enable-predicate (filename)
"Disable backups for files whose name matches `backup-inhibit-file-name-regexp'.
Also call `normal-backup-enable-predicate'."
(save-match-data
(and (not (string-match backup-inhibit-file-name-regexp filename))
(normal-backup-enable-predicate filename))))
(setq backup-enable-predicate 'regexp-backup-enable-predicate)
Даже если эта функция вернется t
, другие механизмы могут отключить резервное копирование.
Если вы хотите отключить резервное копирование в определенном основном режиме, установите make-backup-files
значение nil
в настройке основного режима (возможно, в зависимости от имени файла и других характеристик). Не забудьте сделать переменную buffer-local.
Другой способ отключить резервное копирование для определенных файлов - установить backup-inhibited
. Эта переменная переживает серьезное изменение режима. Именно так VC отключает резервное копирование файлов под управлением версиями (через запись в file-find-hook
). Не забудьте сделать переменную buffer-local.