mu4e: gnus-view: Make sure to clean up gnus mm buffers

After leaving a gnus-view buffer, we should clean up the the mm-*
buffers it creates; we were leaking those.

Fixes #1781
This commit is contained in:
Dirk-Jan C. Binnema 2020-08-09 17:06:32 +03:00
parent 2b49db2c28
commit 6880fa5ef9
1 changed files with 11 additions and 0 deletions

View File

@ -375,6 +375,11 @@ article-mode."
(when embedded (local-set-key "q" 'kill-buffer-and-window))))
(switch-to-buffer buf))))
;; remember the mime-handles, so we can clean them up when
;; we quit this buffer.
(defvar-local mu4e~gnus-article-mime-handles nil)
(put 'mu4e~gnus-article-mime-handles 'permanent-local t)
(defun mu4e~view-gnus (msg)
"View MSG using Gnus' article mode. Experimental."
(require 'gnus-art)
@ -410,10 +415,16 @@ article-mode."
(gnus-display-mime-function (mu4e~view-gnus-display-mime msg))
(gnus-icalendar-additional-identities (mu4e-personal-addresses)))
(gnus-article-prepare-display))
(setq mu4e~gnus-article-mime-handles gnus-article-mime-handles)
(setq mu4e~view-message msg)
(mu4e-view-mode)
(setq gnus-article-decoded-p gnus-article-decode-hook)
(set-buffer-modified-p nil)
(add-hook 'kill-buffer-hook
(lambda() ;; cleanup the mm-* buffers that the view spawns
(when mu4e~gnus-article-mime-handles
(mm-destroy-parts mu4e~gnus-article-mime-handles)
(setq mu4e~gnus-article-mime-handles nil))))
(read-only-mode))))
(defun mu4e~view-gnus-display-mime (msg)