From 71e0223d866dd5ba16048f5635cd342666e57882 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Sat, 24 Apr 2021 22:37:03 +0300 Subject: [PATCH] mu4e-view-gnus: implement mu4e-action-view-in-browser Reimplement the browser view code for the gnus-based viewer; and let gnus handle it too. On change is that we currently only support showing html-messages. --- mu4e/mu4e-view-gnus.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mu4e/mu4e-view-gnus.el b/mu4e/mu4e-view-gnus.el index 08d56d5e..c75246d3 100644 --- a/mu4e/mu4e-view-gnus.el +++ b/mu4e/mu4e-view-gnus.el @@ -91,6 +91,28 @@ etc." (mu4e~view-render-buffer msg) (buffer-string))) +(defun mu4e-action-view-in-browser (msg) + "Show current message MSG in browser, if it contains an html body." +;; (with-temp-buffer + (with-temp-buffer + (insert-file-contents-literally + (mu4e-message-field msg :path) nil nil nil t) + (let ((header (mapconcat 'identity + (seq-filter (lambda(hdr) hdr) + (seq-map (lambda(field) + (when-let ((val (message-fetch-field field))) + (format "%s: %s" (capitalize field) val))) + '("from" "to" "cc" "date" "subject"))) "\n")) + (parts (mm-dissect-buffer t t))) + ;; If singlepart, enforce a list. + (when (and (bufferp (car parts)) + (stringp (car (mm-handle-type parts)))) + (setq parts (list parts))) + ;; Process the list + (unless (gnus-article-browse-html-parts parts header) + (mu4e-warn "Mail doesn't contain a \"text/html\" part!")) + (mm-destroy-parts parts)))) + (defun mu4e~view-render-buffer(msg) "Render current buffer with MSG using Gnus' article mode in