From: Richard M. Stallman Date: Fri, 23 Sep 2011 23:44:32 +0000 (-0400) Subject: Don't allow killing Rmail view buffer by itself. X-Git-Url: http://git.hcoop.net/bpt/emacs.git/commitdiff_plain/e08b633bd6e6396af85cd52482949c01c73fbb3a Don't allow killing Rmail view buffer by itself. It gets killed only when its Rmail buffer gets killed. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0b4a7aaea8..b5f458ecfb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-09-23 Richard Stallman + + * mail/rmail.el (rmail-view-buffer-kill-buffer-hook): New function. + (rmail-generate-viewer-buffer): Put that hook on view buffer. + (rmail-mode-kill-buffer-hook): Override that hook, to kill view buffer. + 2011-09-23 Andreas Schwab * international/mule-diag.el (mule-diag): Insert a newline after diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index db06de9be7..54de6310b5 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -1310,9 +1310,14 @@ Create the buffer if necessary." (if (and (local-variable-p 'rmail-view-buffer) (buffer-live-p rmail-view-buffer)) rmail-view-buffer - (generate-new-buffer - (format " *message-viewer %s*" - (file-name-nondirectory (or buffer-file-name (buffer-name))))))) + (let ((newbuf + (generate-new-buffer + (format " *message-viewer %s*" + (file-name-nondirectory + (or buffer-file-name (buffer-name))))))) + (with-current-buffer newbuf + (add-hook 'kill-buffer-hook 'rmail-view-buffer-kill-buffer-hook nil t)) + newbuf))) (defun rmail-swap-buffers () "Swap text between current buffer and `rmail-view-buffer'. @@ -1372,7 +1377,14 @@ If so restore the actual mbox message collection." (message "Marking buffer unmodified to avoid rewriting Babyl file as mbox file"))) (defun rmail-mode-kill-buffer-hook () - (if (buffer-live-p rmail-view-buffer) (kill-buffer rmail-view-buffer))) + ;; Turn off the hook on the view buffer, so we can kill it, then kill it. + (if (buffer-live-p rmail-view-buffer) + (with-current-buffer rmail-view-buffer + (setq kill-buffer-hook nil) + (kill-buffer rmail-view-buffer)))) + +(defun rmail-view-buffer-kill-buffer-hook () + (error "Can't kill message view buffer by itself")) ;; Set up the permanent locals associated with an Rmail file. (defun rmail-perm-variables ()