Os arquivos de backup / salvamento automático do Emacs podem ser muito úteis. Mas esses recursos são confusos.
Arquivos de backup
Os arquivos de backup têm tildes ( ~
ou ~9~
) no final e devem ser gravados no diretório inicial do usuário. Quando make-backup-files
não é nulo, o Emacs cria automaticamente um backup do arquivo original na primeira vez em que o arquivo é salvo de um buffer. Se você estiver editando um novo arquivo, o Emacs criará um backup na segunda vez que você salvar o arquivo.
Não importa quantas vezes você salve o arquivo, o backup permanecerá inalterado. Se você matar o buffer e depois visitar o arquivo novamente, ou na próxima vez em que iniciar uma nova sessão do Emacs, um novo arquivo de backup será criado. O novo backup reflete o conteúdo do arquivo após a reabertura ou no início das sessões de edição. Mas um backup existente nunca é tocado novamente. Portanto, acho útil criar backups numerados (consulte a configuração abaixo).
Para criar backups, use explicitamente save-buffer
( C-x C-s
) com argumentos de prefixo.
diff-backup
e dired-diff-backup
compara um arquivo com seu backup ou vice-versa. Mas não há função para restaurar arquivos de backup. Por exemplo, no Windows, para restaurar um arquivo de backup
C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~
deve ser copiado manualmente como
C:\Users\USERNAME\.emacs.el
Salvar arquivos automaticamente
Os arquivos de salvamento automático usam hashmarks ( #
) e devem ser gravados localmente no diretório do projeto (junto com os arquivos reais). O motivo é que os arquivos de salvamento automático são apenas arquivos temporários criados pelo Emacs até que um arquivo seja salvo novamente (como com apressada obediência).
- Antes que o usuário pressione
C-x C-s
( save-buffer
) para salvar um arquivo, o Emacs salva automaticamente os arquivos - com base na contagem de pressionamentos de tecla ( auto-save-interval
) ou quando você para de digitar ( auto-save-timeout
).
- O Emacs também salva automaticamente sempre que falha, incluindo a interrupção do trabalho do Emacs com um comando shell.
Quando o usuário salva o arquivo, a versão salva automaticamente é excluída. Mas quando o usuário sai do arquivo sem salvá-lo, o Emacs ou a sessão X travam, os arquivos salvos automaticamente ainda existem.
Use revert-buffer
ou recover-file
para restaurar arquivos de salvamento automático. Observe que o Emacs registra sessões interrompidas para recuperação posterior em arquivos denominados ~ / .emacs.d / auto-save-list . A recover-session
função usará essas informações.
O método preferido para recuperar de um arquivo salvo automaticamente é M-x revert-buffer RET
. O Emacs perguntará: "O buffer foi salvo automaticamente recentemente. Reverter do arquivo de salvamento automático?" ou "Reverter buffer do arquivo FILENAME?". No caso deste último, não há arquivo de salvamento automático. Por exemplo, porque você salvou antes de digitar outras auto-save-intervall
teclas, nesse caso o Emacs excluiu o arquivo de salvamento automático.
Atualmente, o salvamento automático está desativado por padrão, pois pode retardar a edição quando conectado a uma máquina lenta e porque muitos arquivos contêm dados confidenciais.
Configuração
Aqui está uma configuração que IMHO funciona melhor:
(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)
)
Dados sensíveis
Outro problema é que você não deseja que o Emacs espalhe cópias de arquivos com dados confidenciais. Use esse modo por arquivo. Como este é um modo menor, para os meus propósitos, eu o renomei sensitive-minor-mode
.
Para habilitá-lo para todos os arquivos .vcf e .gpg , no seu .emacs use algo como:
(setq auto-mode-alist
(append
(list
'("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
)
auto-mode-alist))
Como alternativa, para proteger apenas alguns arquivos, como alguns arquivos .txt , use uma linha como
// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-
no arquivo