Désactiver les sauvegardes automatiques pour des fichiers spécifiques

10

Pendant longtemps, Emacs a placé les sauvegardes de tous les fichiers dans un seul dossier:

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

Je ne visite presque jamais le backupsrépertoire, mais récemment j'ai remarqué qu'il contient beaucoup de *-autoloads.elfichiers pour lesquels je n'ai pas besoin de sauvegardes. Comment puis-je dire à Emacs de ne pas effectuer de sauvegardes de ces types de fichiers?

itsjeyd
la source

Réponses:

14

Vous pouvez personnaliser l'emplacement via backup-directory-alist. Chaque entrée de la liste indique où placer les sauvegardes des fichiers correspondant à un modèle; si l'emplacement est nil, la sauvegarde sera dans le même répertoire que l'original. L'ordre est important: le premier match est utilisé.

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

Si vous souhaitez supprimer complètement les sauvegardes en fonction du nom ou de l'emplacement du fichier, il ne semble pas y avoir de mécanisme intégré pour cela, mais c'est assez facile à ajouter. La variable backup-enable-predicatecontient le nom d'une fonction qui détermine si un fichier doit avoir des sauvegardes. Le paramètre par défaut normal-backup-enable-predicateempêche uniquement les sauvegardes dans les répertoires qu'Emacs utilise pour les fichiers temporaires. Vous pouvez également ajouter votre propre fonction qui vérifie le nom du fichier.

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

Même si cette fonction revient t, d'autres mécanismes peuvent désactiver les sauvegardes.

Si vous souhaitez désactiver les sauvegardes dans un mode majeur spécifique, définissez-le make-backup-filessur nille hook de configuration du mode principal (éventuellement en fonction du nom de fichier et d'autres caractéristiques). N'oubliez pas de rendre la variable buffer-local.

Une autre façon de désactiver les sauvegardes de certains fichiers est de définir backup-inhibited. Cette variable survit à un changement de mode majeur. C'est ainsi que VC désactive les sauvegardes sur les fichiers sous contrôle de version (via une entrée dans file-find-hook). N'oubliez pas de rendre la variable buffer-local.

Gilles 'SO- arrête d'être méchant'
la source