Los archivos de copia de seguridad / guardado automático de Emacs pueden ser muy útiles. Pero estas características son confusas.
Archivos de respaldo
Los archivos de respaldo tienen tildes ( ~
o ~9~
) al final y se escribirán en el directorio de inicio del usuario. Cuando make-backup-files
no es nulo, Emacs crea automáticamente una copia de seguridad del archivo original la primera vez que el archivo se guarda desde un búfer. Si está editando un nuevo archivo, Emacs creará una copia de seguridad la segunda vez que guarde el archivo.
No importa cuántas veces guarde el archivo, la copia de seguridad permanece sin cambios. Si cierra el búfer y luego vuelve a visitar el archivo, o la próxima vez que inicie una nueva sesión de Emacs, se creará un nuevo archivo de respaldo. La nueva copia de seguridad refleja el contenido del archivo después de volver a abrir, o al comienzo de las sesiones de edición. Pero una copia de seguridad existente nunca se vuelve a tocar. Por lo tanto, me resulta útil crear copias de seguridad numeradas (consulte la configuración a continuación).
Para crear copias de seguridad explícitamente use save-buffer
( C-x C-s
) con argumentos de prefijo.
diff-backup
y dired-diff-backup
compara un archivo con su copia de seguridad o viceversa. Pero no hay función para restaurar archivos de copia de seguridad. Por ejemplo, en Windows, para restaurar un archivo de copia de seguridad
C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~
tiene que ser copiado manualmente como
C:\Users\USERNAME\.emacs.el
Guardar automáticamente archivos
Los archivos de guardado automático usan hashmarks ( #
) y se escribirán localmente dentro del directorio del proyecto (junto con los archivos reales). La razón es que los archivos de guardado automático son solo archivos temporales que Emacs crea hasta que un archivo se guarda nuevamente (como con la obediencia apresurada).
- Antes de que el usuario presione
C-x C-s
( save-buffer
) para guardar un archivo, Emacs guarda automáticamente los archivos, según el recuento de las pulsaciones de teclas ( auto-save-interval
) o cuando deja de escribir ( auto-save-timeout
).
- Emacs también se guarda automáticamente cada vez que se bloquea, incluida la eliminación del trabajo de Emacs con un comando de shell.
Cuando el usuario guarda el archivo, se elimina la versión guardada automáticamente. Pero cuando el usuario sale del archivo sin guardarlo, Emacs o la sesión X se bloquea, los archivos guardados automáticamente todavía existen.
Use revert-buffer
o recover-file
para restaurar archivos de guardado automático. Tenga en cuenta que Emacs registra sesiones interrumpidas para su recuperación posterior en archivos llamados ~ / .emacs.d / auto-save-list . La recover-session
función usará esta información.
El método preferido para recuperarse de un archivo guardado automáticamente es M-x revert-buffer RET
. Emacs preguntará "Buffer ha sido guardado automáticamente recientemente. ¿Revertir desde el archivo de guardado automático?" o "¿Revertir el búfer del archivo FILENAME?". En el caso de este último, no hay archivo de guardado automático. Por ejemplo, porque ha guardado antes de escribir otras auto-save-intervall
pulsaciones de teclas, en cuyo caso Emacs había eliminado el archivo de guardado automático.
El guardado automático está deshabilitado actualmente de forma predeterminada porque puede ralentizar la edición cuando está conectado a una máquina lenta y porque muchos archivos contienen datos confidenciales.
Configuración
Aquí hay una configuración que en mi humilde opinión funciona mejor:
(defvar --backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --backup-directory))
(make-directory --backup-directory t))
(setq backup-directory-alist `(("." . ,--backup-directory)))
(setq make-backup-files t ; backup of a file the first time it is saved.
backup-by-copying t ; don't clobber symlinks
version-control t ; version numbers for backup files
delete-old-versions t ; delete excess backup files silently
delete-by-moving-to-trash t
kept-old-versions 6 ; oldest versions to keep when a new numbered backup is made (default: 2)
kept-new-versions 9 ; newest versions to keep when a new numbered backup is made (default: 2)
auto-save-default t ; auto-save every buffer that visits a file
auto-save-timeout 20 ; number of seconds idle time before auto-save (default: 30)
auto-save-interval 200 ; number of keystrokes between auto-saves (default: 300)
)
Informacion delicada
Otro problema es que no desea que Emacs distribuya copias de archivos con datos confidenciales. Use este modo por archivo. Como este es un modo menor, para mis propósitos lo renombré sensitive-minor-mode
.
Para habilitarlo para todos los archivos .vcf y .gpg , en sus .emacs use algo como:
(setq auto-mode-alist
(append
(list
'("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
)
auto-mode-alist))
Alternativamente, para proteger solo algunos archivos, como algunos archivos .txt , use una línea como
// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-
en el archivo.