Mercurial > emacs
changeset 12846:fc74ffbce5a9
(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.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 13 Aug 1995 16:48:13 +0000 |
parents | 9ee2045cda62 |
children | 61961ca01260 |
files | lisp/files.el |
diffstat | 1 files changed, 32 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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")))