It’s been a while since the lastsuper-save release. The last time Iwrote about it was back in 2018,when I boldly proclaimed: It seems that now super-save is beyond perfect, so don’t expect the nextrelease any time soon!Famous last words. There was a 0.4 release in 2023 (adding a predicate system,buffer exclusions, silent saving, and trailing whitespace cleanup), but I nevergot around to writing about it. The package has been rock solid for years and Ijust didn’t pay it much attention – it quietly did its job, which is kind of thewhole point of an auto-save package.A Bit of HistoryThe idea behind super-save goes all the way back to a blog post I wrote in2012about auto-saving buffers on buffer and window switches. I had been usingIntelliJ IDEA for Java development and loved that it would save your filesautomatically whenever the editor lost focus. No manual C-x C-s, no thinkingabout it. I wanted the same behavior in Emacs.Back then, the implementation was crude – defadvice on switch-to-buffer,other-window, and the windmove commands. That code lived in EmacsPrelude for a few years before I extractedit into a standalone package in 2015. super-save was born.What Prompted This ReleaseYesterday I stumbled uponbuffer-guardian.el, apackage with very similar goals to super-save. Its README has a comparisonwithsuper-savethat highlighted some valid points – mainly that super-save was still relyingon advising specific commands for buffer-switch detection, while newer Emacshooks like window-buffer-change-functions andwindow-selection-change-functions could do the job more reliably.The thing is, those hooks didn’t exist when super-save was created, and Ididn’t rush to adopt them while Emacs 27 was still new and I wanted to supportolder Emacsen. But it’s 2026 now – Emacs 27.1 is ancient history. Time tomodernize!What’s New in 0.5This is the biggest super-save release in years! Here are the highlights:Modern buffer/window switch detectionBuffer and window switches are now detected viawindow-buffer-change-functions and window-selection-change-functions,controlled by the new super-save-when-buffer-switched option (enabled bydefault). This catches all buffer switches – keyboard commands, mouse clicks,custom functions – unlike the old approach of advising individual (yet central)commands.Modern focus handlingFrame focus loss is now detected via after-focus-change-function instead of theobsolete focus-out-hook, controlled by super-save-when-focus-lost (alsoenabled by default).Soft-deprecated trigger systemWith the new hooks in place, both super-save-triggers andsuper-save-hook-triggers now default to nil. You can still use them for edgecases, but for the vast majority of users, the built-in hooks cover everything.org-src and edit-indirect supportsuper-save now knows how to save org-src edit buffers (viaorg-edit-src-save) and edit-indirect buffers (via edit-indirect--commit).Both are enabled by default and controlled by super-save-handle-org-src andsuper-save-handle-edit-indirect.Safer predicatesTwo new default predicates prevent data loss: verify-visited-file-modtimeavoids overwriting files modified outside Emacs, and a directory existence checkprevents errors when a file’s parent directory has been removed. Predicateevaluation is also wrapped in condition-case now, so a broken custom predicatelogs a warning instead of silently disabling all auto-saving.Emacs 27.1 requiredThis allowed cleaning up the code and relying on modern APIs.UpgradingFor most users, upgrading is seamless – the new defaults just work. If you hada custom super-save-triggers list for buffer-switching commands, you canprobably remove it entirely:;; Before: manually listing every command that switches buffers(setq super-save-triggers '(switch-to-buffer other-window windmove-up windmove-down windmove-left windmove-right next-buffer previous-buffer));; After: the window-system hooks catch all of these automatically;; Just delete the above and use the defaults!If you need to add triggers for commands that don’t involve a buffer switch(like ace-window), super-save-triggers is still available for that.A clean 0.5 setup looks something like this:(use-package super-save :ensure t :config ;; Save buffers automatically when Emacs is idle (setq super-save-auto-save-when-idle t) ;; Don't display "Wrote file..." messages in the echo area (setq super-save-silent t) ;; Disable the built-in auto-save (backup files) since super-save handles it (setq auto-save-default nil) (super-save-mode +1))It’s also worth noting that Emacs 26.1 introduced auto-save-visited-mode,which saves file-visiting buffers to their actual files after an idle delay.This overlaps with super-save-auto-save-when-idle, so if you prefer usingthe built-in for idle saves, you can combine the two:(use-package super-save :ensure t :config ;; Don't display "Wrote file..." messages in the echo area (setq super-save-silent t) ;; Disable the built-in auto-save (backup files) (setq auto-save-default nil) (super-save-mode +1));; Let the built-in auto-save-visited-mode handle idle saves(auto-save-visited-mode +1)Burst-Driven Development Strikes AgainMost of my Emacs packages are a fine example of what I like to callburst-drivendevelopment– long periods of stability punctuated by short intense bursts of activity. Ihadn’t touched super-save in years, then spent a few hours modernizing theinternals, adding a test suite, improving the documentation, and cutting arelease. It was fun to revisit the package after all this time and bring it up to2026 standards.If you’ve been using super-save, update to 0.5 and enjoy the improvements. Ifyou haven’t tried it yet – give it a shot. Your poor fingers might thanks for you this,as pressing C-x C-s non-stop is hard work!That’s all I have for you today. Keep hacking!