aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2009-10-03 02:07:28 +0000
committerGlenn Morris2009-10-03 02:07:28 +0000
commitac3c593c978f603f408ef1ea1bae26c92a0df9f0 (patch)
tree989b167a74aa36c40266034e007f2c2cb4a87144
parentde87fb719dfb7403649715b4193038e0f352b64f (diff)
downloademacs-ac3c593c978f603f408ef1ea1bae26c92a0df9f0.tar.gz
emacs-ac3c593c978f603f408ef1ea1bae26c92a0df9f0.zip
(rmail-generate-viewer-buffer): Be more careful about reusing existing
buffers, in case we happen to visit two files with the same basename. (Bug#4593)
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/mail/rmail.el17
2 files changed, 18 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index e220b1c5f6e..8e3319e7df4 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
12009-10-03 Glenn Morris <rgm@gnu.org>
2
3 * mail/rmail.el (rmail-generate-viewer-buffer): Be more careful about
4 reusing existing buffers, in case we happen to visit two files with the
5 same basename. (Bug#4593)
6
12009-10-02 Eli Zaretskii <eliz@gnu.org> 72009-10-02 Eli Zaretskii <eliz@gnu.org>
2 8
3 * makefile.w32-in (update-subdirs-CMD): Add cedet to 9 * makefile.w32-in (update-subdirs-CMD): Add cedet to
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index b690a00dac5..1b11f21cdaa 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1294,11 +1294,15 @@ Instead, these commands are available:
1294(defun rmail-generate-viewer-buffer () 1294(defun rmail-generate-viewer-buffer ()
1295 "Return a reusable buffer suitable for viewing messages. 1295 "Return a reusable buffer suitable for viewing messages.
1296Create the buffer if necessary." 1296Create the buffer if necessary."
1297 (let* ((suffix (file-name-nondirectory (or buffer-file-name (buffer-name)))) 1297 ;; We want to reuse any existing view buffer, so as not to create an
1298 (name (format " *message-viewer %s*" suffix)) 1298 ;; endless number of them. But we must avoid clashes if we visit
1299 (buf (get-buffer name))) 1299 ;; two different rmail files with the same basename (Bug#4593).
1300 (or buf 1300 (if (and (local-variable-p 'rmail-view-buffer)
1301 (generate-new-buffer name)))) 1301 (buffer-live-p rmail-view-buffer))
1302 rmail-view-buffer
1303 (generate-new-buffer
1304 (format " *message-viewer %s*"
1305 (file-name-nondirectory (or buffer-file-name (buffer-name)))))))
1302 1306
1303(defun rmail-swap-buffers () 1307(defun rmail-swap-buffers ()
1304 "Swap text between current buffer and `rmail-view-buffer'. 1308 "Swap text between current buffer and `rmail-view-buffer'.
@@ -1367,6 +1371,9 @@ If so restore the actual mbox message collection."
1367 (set-buffer-multibyte nil) 1371 (set-buffer-multibyte nil)
1368 (with-current-buffer (setq rmail-view-buffer (rmail-generate-viewer-buffer)) 1372 (with-current-buffer (setq rmail-view-buffer (rmail-generate-viewer-buffer))
1369 (setq buffer-undo-list t) 1373 (setq buffer-undo-list t)
1374 ;; Note that this does not erase the buffer. Should it?
1375 ;; It depends on how this is called. If somehow called with the
1376 ;; rmail buffers swapped, it would erase the message collection.
1370 (set (make-local-variable 'rmail-overlay-list) nil) 1377 (set (make-local-variable 'rmail-overlay-list) nil)
1371 (set-buffer-multibyte t) 1378 (set-buffer-multibyte t)
1372 ;; Force C-x C-s write Unix EOLs. 1379 ;; Force C-x C-s write Unix EOLs.