List Unsaved Buffers Before Exiting Emacs
When you hit
C-x C-c to exit Emacs but there are unsaved
buffers, Emacs asks you whether to save each buffer. The problem is, more
often than not, I don’t remember why there is an outstanding change, and
all I can do is to nervously say “yes”, hoping that it isn’t a typo I
accidentally typed into that buffer.
Wouldn’t it be nice if Emacs can show me a list of unsaved buffers,
and let me examine them and save/kill them? The function below does just
that: bind it to
C-x C-c and you will always exit Emacs with
peace in your mind.
(defun clean-exit () "Exit Emacs cleanly. If there are unsaved buffer, pop up a list for them to be saved before existing. Replaces ‘save-buffers-kill-terminal’." (interactive) (if (frame-parameter nil 'client) (server-save-buffers-kill-terminal arg) (if-let ((buf-list (seq-filter (lambda (buf) (and (buffer-modified-p buf) (buffer-file-name buf))) (buffer-list)))) (progn (pop-to-buffer (list-buffers-noselect t buf-list)) (message "s to save, C-k to kill, x to execute")) (save-buffers-kill-emacs))))