Emacs: Auto Save
Real Auto Save File
This is the best solution i use since about 2017. Most simple code, reliable, and practical.
Save all files when you switch out of emacs.
Put this in emacs init.
(defun xah-save-all-unsaved () "Save all unsaved files. no ask. Version 2019-11-05" (interactive) (save-some-buffers t )) (if (version< emacs-version "27") (add-hook 'focus-out-hook 'xah-save-all-unsaved) (setq after-focus-change-function 'xah-save-all-unsaved))
disable emacs's “#auto-save#” backup
;; stop creating those #auto-save# files (setq auto-save-default nil)
emacs has auto-save-mode
, however, it's not what you think.
Emacs's auto-save-mode
periodically saves a copy of your file with the name #filename#
.
When you save the file, those #files# are deleted automatically.
In case of crash or electricity outage, when you open a file afterward, emacs will detect those #files# and ask if you want to recover.
But the problem is, even if no crash, in lots of situations (such as sync to server), you'll find those #files# annoying, because they are often symbolic links to non-existent files, and will cause tools like rsync to complain or choke some dir walk scripts.
See also: Emacs: Turn Off Backup
stop emacs from creating .#lock file links

emacs backup is so annoying. even when you have it off (setq auto-save-default nil) , it still creates temp # files. which crashes script that traverse dir.
Solution:
(setq create-lockfiles nil)
This will completely stop emacs from creating temoporary symbolic link file named “#something”.
(disable lock file may be a problem if you have situations where a file is being edited by different people or instances of emacs.)
2018-10-12 thanks to Dale Hagglund [ https://twitter.com/DaleHagglund/status/1050786629844004865 accessed: 2018-10-12] for create-lockfiles
alternative solution and problem
You can set emacs to auto save files directly, instead of creating those #filename#.
Put the following in your emacs init:
(setq auto-save-default t) (setq auto-save-visited-file-name t)
Problems
However, this does not work well. Emacs still generates those #files#, this time, named like this:
.#xxtemp.201601134145.44920.el -&gt; xah@xah-p6813w.21261:1452244010
If you have scripts going thru your machine, you get this error:
error: cannot open /home/john/web/.#vocabulary.html No such file or directory
There are probably ways to fix this, with hooks or timer, but i haven't looked into.
thanks to Fuqiao Xue (xfq) [https://github.com/xfq/] and finalpatch [http://www.weibo.com/u/1885517634]
thanks to http://irreal.org/blog/?p=4867, Anna Pawlicka (@AnnaPawlicka)
If you have a question, put $5 at patreon and message me on xah discord.
Or support me by Buy Xah Emacs Tutorial