# HG changeset patch # User Richard M. Stallman # Date 808332493 0 # Node ID fc74ffbce5a9ee7c51f2d2e0e0ae18db0a0cd780 # Parent 9ee2045cda6211f769b5e621cc6dfbf4a1d7b50c (recover-file): It's ok if the visited file doesn't exist. (recover-session-finish): Compute "file name" from autosave file if no visited file. diff -r 9ee2045cda62 -r fc74ffbce5a9 lisp/files.el --- a/lisp/files.el Sun Aug 13 15:47:11 1995 +0000 +++ b/lisp/files.el Sun Aug 13 16:48:13 1995 +0000 @@ -2079,7 +2079,9 @@ (error "%s is an auto-save file" file)) (let ((file-name (let ((buffer-file-name file)) (make-auto-save-file-name)))) - (cond ((not (file-newer-than-file-p file-name file)) + (cond ((if (file-exists-p file) + (not (file-newer-than-file-p file-name file)) + (not (file-exists-p file-name))) (error "Auto-save file %s not current" file-name)) ((save-window-excursion (if (not (eq system-type 'vax-vms)) @@ -2129,14 +2131,41 @@ (set-buffer buffer) (erase-buffer) (insert-file-contents file) + ;; The file contains a pair of line for each auto-saved buffer. + ;; The first line of the pair contains the visited file name + ;; or is empty if the buffer was not visiting a file. + ;; The second line is the auto-save file name. (map-y-or-n-p "Recover %s? " (lambda (file) (save-excursion (recover-file file))) (lambda () (if (eobp) nil (prog1 - (buffer-substring-no-properties - (point) (progn (end-of-line) (point))) + (if (eolp) + ;; If the first line of the pair is empty, + ;; it means this was a non-file buffer + ;; that was autosaved. + ;; Make a file name from + ;; the auto-save file name. + (let ((autofile + (buffer-substring-no-properties + (save-excursion + (forward-line 1) + (point)) + (save-excursion + (forward-line 1) + (end-of-line) + (point))))) + (expand-file-name + (concat "temp" + (substring + (file-name-nondirectory autofile) + 1 -1)) + (file-name-directory autofile))) + ;; This pair of lines is a file-visiting + ;; buffer. Use the visited file name. + (buffer-substring-no-properties + (point) (progn (end-of-line) (point)))) (while (and (eolp) (not (eobp))) (forward-line 2))))) '("file" "files" "recover")))