Wyłącz automatyczne kopie zapasowe dla określonych plików

10

Przez długi czas Emacs umieszczał kopie zapasowe wszystkich plików w jednym folderze:

(setq backup-directory-alist '(("." . "~/.emacs.d/backups")))

I prawie nigdy odwiedzić backupskatalog, ale ostatnio zauważyłem, że zawiera wiele z *-autoloads.elplików, że nie potrzeba do tworzenia kopii zapasowych. Jak mogę powiedzieć Emacsowi, aby nie tworzył kopii zapasowych tego typu plików?

itsjeyd
źródło

Odpowiedzi:

14

Możesz dostosować lokalizację poprzez backup-directory-alist. Każda pozycja na liście mówi, gdzie umieścić kopie zapasowe plików pasujących do wzorca; jeśli lokalizacja jest nil, kopia zapasowa będzie w tym samym katalogu, co oryginał. Kolejność ma znaczenie: używane jest pierwsze dopasowanie.

(setq backup-directory-alist '(("-autoloads\\.el\\'")
                               ("." . "~/.emacs.d/backups")))

Jeśli chcesz całkowicie pominąć tworzenie kopii zapasowych na podstawie nazwy pliku lub lokalizacji, wydaje się, że nie ma do tego wbudowanego mechanizmu, ale można go łatwo dodać. Zmienna backup-enable-predicatezawiera nazwę funkcji, która określa, czy plik powinien mieć kopie zapasowe. Ustawienie domyślne normal-backup-enable-predicateblokuje tworzenie kopii zapasowych tylko w katalogach używanych przez Emacsa do plików tymczasowych. Możesz dodać własną funkcję, która również sprawdza nazwę pliku.

(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)

Nawet jeśli ta funkcja powróci t, inne mechanizmy mogą wyłączyć kopie zapasowe.

Jeśli chcesz wyłączyć tworzenie kopii zapasowych w określonym trybie dur ustawiony make-backup-filesna nilhak ustawień głównych trybach (ewentualnie na podstawie nazwy pliku i innych cech). Nie zapomnij ustawić zmiennej bufora na lokalną.

Innym sposobem wyłączenia kopii zapasowych dla niektórych plików jest ustawienie backup-inhibited. Ta zmienna przetrwa poważną zmianę trybu. W ten sposób VC wyłącza tworzenie kopii zapasowych plików pod kontrolą wersji (poprzez wpis w file-find-hook). Nie zapomnij ustawić zmiennej bufora na lokalną.

Gilles „SO- przestań być zły”
źródło