Function: mail-recover
mail-recover is an interactive and byte-compiled function defined in
sendmail.el.gz.
Signature
(mail-recover)
Documentation
Recover interrupted mail composition from auto-save files.
If the mail buffer has a current valid auto-save file, the command recovers that file. Otherwise, it displays a buffer showing the existing auto-saved draft messages; you can move to one of them and type C-c C-c to recover that one.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/mail/sendmail.el.gz
(defun mail-recover ()
"Recover interrupted mail composition from auto-save files.
If the mail buffer has a current valid auto-save file,
the command recovers that file. Otherwise, it displays a
buffer showing the existing auto-saved draft messages;
you can move to one of them and type C-c C-c to recover that one."
(interactive)
;; In case they invoke us from some random buffer...
(switch-to-buffer "*mail*")
;; If *mail* didn't exist, set its directory, so that auto-saved
;; drafts will be found.
(let ((dir (expand-file-name
(file-name-as-directory mail-default-directory))))
(if (file-exists-p dir)
(setq default-directory dir)))
(or (eq major-mode 'mail-mode)
(mail-mode))
(let ((file-name buffer-auto-save-file-name))
(cond ((and file-name (file-exists-p file-name))
(let ((dispbuf
;; This used to invoke `ls' via call-process, but
;; dired-noselect is more portable to systems where
;; `ls' is not a standard program (it will use
;; ls-lisp instead).
(dired-noselect file-name
(concat dired-listing-switches " -t"))))
(save-selected-window
(switch-to-buffer-other-window dispbuf)
(goto-char (point-min))
(forward-line 2)
(dired-move-to-filename)
(setq dispbuf (rename-buffer "*Directory*" t)))
(if (not (yes-or-no-p
(format "Recover mail draft from auto save file %s? "
file-name)))
(error "mail-recover canceled")
(let ((buffer-read-only nil)
(buffer-coding buffer-file-coding-system)
;; Auto-save files are written in internal
;; representation of non-ASCII characters.
(coding-system-for-read 'utf-8-emacs-unix))
(erase-buffer)
(insert-file-contents file-name nil)
(setq buffer-file-coding-system buffer-coding)))))
(t (mail-recover-1)))))