summaryrefslogtreecommitdiff
path: root/mu4e/mu4e-view.el
diff options
context:
space:
mode:
authorDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2020-08-09 17:06:32 +0300
committerDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2020-08-09 17:12:40 +0300
commit0d6bf906fef25bbd32d55918c7551bd73734b291 (patch)
treec55ea0c3c177d8a7256ebbc4b66fe827e0caa692 /mu4e/mu4e-view.el
parent9d43c3c4bb6a437f942d994c8f4d6b5dd32e1fbf (diff)
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 issue #1781
Diffstat (limited to 'mu4e/mu4e-view.el')
-rw-r--r--mu4e/mu4e-view.el11
1 files changed, 11 insertions, 0 deletions
diff --git a/mu4e/mu4e-view.el b/mu4e/mu4e-view.el
index b8dd0ff..fb1d64d 100644
--- a/mu4e/mu4e-view.el
+++ b/mu4e/mu4e-view.el
@@ -370,6 +370,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)
+ (setq mu4e~gnus-article-mime-handles gnus-article-mime-handles)
(defun mu4e~view-gnus (msg)
"View MSG using Gnus' article mode. Experimental."
(require 'gnus-art)
@@ -401,10 +406,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)