diff options
| author | Glenn Morris | 2009-10-03 02:07:28 +0000 |
|---|---|---|
| committer | Glenn Morris | 2009-10-03 02:07:28 +0000 |
| commit | ac3c593c978f603f408ef1ea1bae26c92a0df9f0 (patch) | |
| tree | 989b167a74aa36c40266034e007f2c2cb4a87144 | |
| parent | de87fb719dfb7403649715b4193038e0f352b64f (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/mail/rmail.el | 17 |
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 @@ | |||
| 1 | 2009-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 | |||
| 1 | 2009-10-02 Eli Zaretskii <eliz@gnu.org> | 7 | 2009-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. |
| 1296 | Create the buffer if necessary." | 1296 | Create 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. |