* arc-mode.el (archive-extract): Check if an existing buffer name
authorChong Yidong <cyd@stupidchicken.com>
Wed, 8 Mar 2006 01:57:59 +0000 (01:57 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Wed, 8 Mar 2006 01:57:59 +0000 (01:57 +0000)
comes from a different archive.

lisp/ChangeLog
lisp/arc-mode.el

index 18fa97f..7d5dbce 100644 (file)
@@ -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.
 
index 9799e3e..abf3899 100644 (file)
@@ -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.