Search code examples
emacsbackup

How can I make Emacs backup every time I save?


From time to time I delete files that I shouldn't and worst is files that I've been writing myself. Therefore I have many times been saved by the backup feature of Emacs.

But my problem is that Emacs only makes a backup the very first time you save a buffer. Is there a way to make Emacs do it every time I press C-x C-s?

This is what my .emacs look like currently (only the part that deals with backups):

;; ===== Backups =====                                                                    

;; Enable backup files.                                                                   
(setq make-backup-files t)

;; Save all backup file in this directory.                                                
(setq backup-directory-alist (quote ((".*" . "~/.emacs_backups/"))))

;; Always backup by copying (safest, but slowest)                                         
(setq backup-by-copying t)

;; Append .~1~ (and increasing numbers) to end of file when saving backup                 
(setq version-control t)

;; Defining how many old versions of a file to keep (starting from the                    
;; most recent and counting backward                                                      
(setq kept-new-versions 100)

Solution

  • After reading this: EmacsWiki: Force Backups

    I added these lines to my .emacs:

    (defun force-backup-of-buffer ()
      (setq buffer-backed-up nil))
    
    (add-hook 'before-save-hook  'force-backup-of-buffer)
    

    It utilizes the standard back up/version control but resets the flag that indicates wether or not the buffer has been backed up this session before a save.

    First two rows define a function that resets the flag that indicates wether the buffer was backed up during this session.

    Last row adds an event hook that executes the function before a save.

    This does exactly what I wanted.