diff options
author | Richard M. Stallman <rms@gnu.org> | 1996-06-12 21:50:08 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1996-06-12 21:50:08 +0000 |
commit | 3742f39f26c7cc73c113bd3117059c8107647353 (patch) | |
tree | 9da6f75ce79d79d5c3088b44a67192365ec9a867 /lisp/tar-mode.el | |
parent | 57e3d22a51e6bca0ff7bc94ed30739dafc09cb91 (diff) | |
download | emacs-3742f39f26c7cc73c113bd3117059c8107647353.tar.gz |
(tar-mode-revert): Cope if user cancels the revert.
Diffstat (limited to 'lisp/tar-mode.el')
-rw-r--r-- | lisp/tar-mode.el | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index ce8ed3b6184..9ac9eb90e08 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -630,11 +630,19 @@ appear on disk when you save the tar-file's buffer." ;; Revert the buffer and recompute the dired-like listing. (defun tar-mode-revert (&optional no-autosave no-confirm) - (setq tar-header-offset nil) - (let ((revert-buffer-function nil)) - (revert-buffer t no-confirm) - (widen)) - (tar-mode)) + (let ((revert-buffer-function nil) + (old-offset tar-header-offset) + success) + (setq tar-header-offset nil) + (unwind-protect + (and (revert-buffer t no-confirm) + (progn (widen) + (setq success t) + (tar-mode))) + ;; If the revert was canceled, + ;; put back the old value of tar-header-offset. + (or success + (setq tar-header-offset old-offset))))) (defun tar-next-line (p) |