summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2006-03-08 01:57:59 +0000
committerChong Yidong <cyd@stupidchicken.com>2006-03-08 01:57:59 +0000
commit9b1fad33f06875dd649a0e3eecd8b3b6f64e134f (patch)
tree45431e261a142440c0be966179b8071d904e1f2f
parent179a6f216dc7a2f4dc7f490ea5c84953201d43d8 (diff)
downloademacs-9b1fad33f06875dd649a0e3eecd8b3b6f64e134f.tar.gz
* arc-mode.el (archive-extract): Check if an existing buffer name
comes from a different archive.
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/arc-mode.el8
2 files changed, 8 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 18fa97f0d20..7d5dbce1d35 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,8 @@
2006-03-07 Chong Yidong <cyd@stupidchicken.com>
+ * arc-mode.el (archive-extract): Check if an existing buffer name
+ comes from a different archive.
+
* help.el (describe-key-briefly): If KEY is a down event, read and
discard the up event.
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 9799e3e0834..abf38994235 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -907,16 +907,18 @@ using `make-temp-file', and the generated name is returned."
(read-only-p (or archive-read-only
view-p
(string-match file-name-invalid-regexp ename)))
+ (arcfilename (expand-file-name (concat arcname ":" iname)))
(buffer (get-buffer bufname))
(just-created nil))
- (if buffer
+ (if (and buffer
+ (string= (buffer-file-name buffer) arcfilename))
nil
(setq archive (archive-maybe-copy archive))
+ (setq bufname (generate-new-buffer-name bufname))
(setq buffer (get-buffer-create bufname))
(setq just-created t)
(with-current-buffer buffer
- (setq buffer-file-name
- (expand-file-name (concat arcname ":" iname)))
+ (setq buffer-file-name arcfilename)
(setq buffer-file-truename
(abbreviate-file-name buffer-file-name))
;; Set the default-directory to the dir of the superior buffer.