mu4e-view: fallback to raw view for unreadable messages

So users can at least see _something_...
This commit is contained in:
Dirk-Jan C. Binnema
2024-08-22 22:59:46 +03:00
parent c28bfe04e1
commit 1930d4b663

View File

@ -134,7 +134,7 @@ Then, display the results."
((mu4e-current-buffer-type-p 'view) ((mu4e-current-buffer-type-p 'view)
(when (mu4e--view-detached-p (current-buffer)) (when (mu4e--view-detached-p (current-buffer))
(mu4e-error (mu4e-error
"Cannot navigate in a detached view buffer.")) "Cannot navigate in a detached view buffer"))
(mu4e-get-headers-buffer)) (mu4e-get-headers-buffer))
;; fallback; but what would trigger this? ;; fallback; but what would trigger this?
(t (mu4e-get-headers-buffer)))) (t (mu4e-get-headers-buffer))))
@ -235,9 +235,10 @@ If this succeeds, return the new docid. Otherwise, return nil."
;;; Interactive functions ;;; Interactive functions
(defun mu4e-view-action (&optional msg) (defun mu4e-view-action (&optional msg)
"Ask user for some action to apply on MSG, then do it. "Ask user for some action to apply on MSG, then do it.
If MSG is nil apply action to message returned If MSG is nil apply action to message returned by
bymessage-at-point. The actions are specified in `mu4e-message-at-point'.
`mu4e-view-actions'."
The actions are specified in `mu4e-view-actions'."
(interactive) (interactive)
(let* ((msg (or msg (mu4e-message-at-point))) (let* ((msg (or msg (mu4e-message-at-point)))
(actionfunc (mu4e-read-option "Action: " mu4e-view-actions))) (actionfunc (mu4e-read-option "Action: " mu4e-view-actions)))
@ -327,7 +328,7 @@ Add this function to `mu4e-view-mode-hook' to enable this feature."
"Detach the view buffer from its headers buffer." "Detach the view buffer from its headers buffer."
(interactive) (interactive)
(unless mu4e-linked-headers-buffer (unless mu4e-linked-headers-buffer
(mu4e-error "This view buffer is already detached.")) (mu4e-error "This view buffer is already detached"))
(mu4e-message "Detached view buffer from %s" (mu4e-message "Detached view buffer from %s"
(progn mu4e-linked-headers-buffer (progn mu4e-linked-headers-buffer
(with-current-buffer mu4e-linked-headers-buffer (with-current-buffer mu4e-linked-headers-buffer
@ -339,7 +340,7 @@ Add this function to `mu4e-view-mode-hook' to enable this feature."
(rename-buffer (make-temp-name (buffer-name)) t)))) (rename-buffer (make-temp-name (buffer-name)) t))))
(defun mu4e-view-attach (headers-buffer) (defun mu4e-view-attach (headers-buffer)
"Attaches a view buffer to a headers buffer." "Attaches a view buffer to HEADERS-BUFFER."
(interactive (interactive
(list (get-buffer (read-buffer (list (get-buffer (read-buffer
"Select a headers buffer to attach to: " nil t "Select a headers buffer to attach to: " nil t
@ -422,7 +423,6 @@ list."
(mu4e--view-in-headers-context (mu4e--view-in-headers-context
(mu4e-mark-execute-all))) (mu4e-mark-execute-all)))
;;; URL handling ;;; URL handling
(defvar mu4e--view-link-map nil (defvar mu4e--view-link-map nil
@ -640,7 +640,8 @@ As a side-effect, a message that is being viewed loses its
;; problems later (#2260, #2508), so let's remove those ;; problems later (#2260, #2508), so let's remove those
(article-remove-cr) (article-remove-cr)
(setq-local mu4e--view-message msg) (setq-local mu4e--view-message msg)
(mu4e--view-render-buffer msg)) (ignore-errors
(mu4e--view-render-buffer msg)))
(mu4e-loading-mode 0))) (mu4e-loading-mode 0)))
(unless (mu4e--view-detached-p gnus-article-buffer) (unless (mu4e--view-detached-p gnus-article-buffer)
(with-current-buffer mu4e-linked-headers-buffer (with-current-buffer mu4e-linked-headers-buffer
@ -741,8 +742,9 @@ determine which browser function to use."
(set-buffer-modified-p nil) (set-buffer-modified-p nil)
(add-hook 'kill-buffer-hook #'mu4e--view-kill-mime-handles)) (add-hook 'kill-buffer-hook #'mu4e--view-kill-mime-handles))
(epg-error (epg-error
(mu4e-warn "EPG error: %s; fall back to raw view" (mu4e-message "EPG error: %s; fall back to raw view"
(error-message-string err)))))) (error-message-string err))
(error)))))
(defun mu4e-view-refresh () (defun mu4e-view-refresh ()
"Refresh the message view." "Refresh the message view."