summaryrefslogtreecommitdiff
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:06:32 +0300
commit6880fa5ef9ba5485757a998a5baf9986bbdfba61 (patch)
tree80d9183b8cefe2340a076a1150a8c62a7afe2eb1
parent2b49db2c28c53936e31d174a9fc6b63099387130 (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 #1781
-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 e3f6171..074becc 100644
--- a/mu4e/mu4e-view.el
+++ b/mu4e/mu4e-view.el
@@ -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)