Desactiva las copias de seguridad automáticas para archivos específicos

10

Durante mucho tiempo he tenido Emacs poner copias de seguridad de todos los archivos en una sola carpeta:

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

Casi nunca visita el backupsdirectorio, pero recientemente me di cuenta de que contiene una gran cantidad de *-autoloads.elarchivos que no necesito copias de seguridad para. ¿Cómo puedo decirle a Emacs que no haga copias de seguridad de este tipo de archivos?

itsjeyd
fuente

Respuestas:

14

Puede personalizar la ubicación a través de backup-directory-alist. Cada entrada en la lista dice dónde colocar las copias de seguridad de los archivos que coinciden con un patrón; Si la ubicación es nil, la copia de seguridad estará en el mismo directorio que el original. El orden importa: se utiliza la primera coincidencia.

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

Si desea suprimir las copias de seguridad por completo en función del nombre o la ubicación del archivo, no parece haber un mecanismo incorporado para eso, pero es bastante fácil de agregar. La variable backup-enable-predicatecontiene el nombre de una función que determina si un archivo debe tener copias de seguridad. La configuración predeterminada normal-backup-enable-predicatesolo inhibe las copias de seguridad en los directorios que Emacs usa para archivos temporales. Puede agregar su propia función que verifica también el nombre del archivo.

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

Incluso si esta función regresa t, otros mecanismos pueden deshabilitar las copias de seguridad.

Si desea desactivar las copias de seguridad en un modo principal específica, establecido make-backup-filesa nilen el gancho de configuración del modo mayor (posiblemente basado en el nombre del archivo y otras características). No olvides hacer que la variable buffer-local.

Otra forma de deshabilitar las copias de seguridad para ciertos archivos es establecer backup-inhibited. Esta variable sobrevive a un cambio de modo importante. Es así como VC deshabilita las copias de seguridad en archivos bajo control de versiones (a través de una entrada file-find-hook). No olvides hacer que la variable buffer-local.

Gilles 'SO- deja de ser malvado'
fuente