Matikan cadangan otomatis untuk file tertentu

10

Sudah sejak lama Emacs menaruh cadangan untuk semua file ke dalam satu folder:

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

Saya hampir tidak pernah mengunjungi backupsdirektori, tetapi baru-baru aku menyadari bahwa itu berisi banyak dari *-autoloads.elfile yang saya tidak perlu backup untuk. Bagaimana saya bisa memberi tahu Emacs untuk tidak membuat cadangan dari jenis file ini?

itu hanya
sumber

Jawaban:

14

Anda dapat menyesuaikan lokasi melalui backup-directory-alist. Setiap entri dalam daftar mengatakan di mana harus meletakkan cadangan file yang cocok dengan suatu pola; jika lokasinya nil, cadangan akan berada di direktori yang sama dengan aslinya. Urutan penting: pertandingan pertama digunakan.

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

Jika Anda ingin menekan cadangan sama sekali berdasarkan nama file atau lokasi, tampaknya tidak ada mekanisme bawaan untuk itu, tetapi cukup mudah untuk ditambahkan. Variabel backup-enable-predicateberisi nama fungsi yang menentukan apakah file harus memiliki cadangan. Pengaturan default normal-backup-enable-predicatehanya menghambat cadangan di direktori yang digunakan Emacs untuk file sementara. Anda dapat menambahkan fungsi Anda sendiri yang memeriksa nama file juga.

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

Bahkan jika fungsi ini kembali t, mekanisme lain dapat menonaktifkan cadangan.

Jika Anda ingin menonaktifkan cadangan dalam mode utama tertentu, atur make-backup-fileske nildalam kait pengaturan mode utama (mungkin berdasarkan nama file dan karakteristik lainnya). Jangan lupa untuk membuat variabel buffer-lokal.

Cara lain untuk menonaktifkan cadangan untuk file tertentu adalah dengan mengatur backup-inhibited. Variabel ini bertahan dari perubahan mode utama. Begitulah cara VC menonaktifkan cadangan pada file di bawah kontrol versi (melalui entri di file-find-hook). Jangan lupa untuk membuat variabel buffer-lokal.

Gilles 'SANGAT berhenti menjadi jahat'
sumber