emacs: bugfix attachment content-type as mime-type handling

Notmuch puts attachments in as declared content-type except when the
content-type is application/octet-stream it tries to guess the type
from the filename/extension. This means that viewing a pdf (for
example) which is sent as application/octet-strem invokes the pdf
viewer rather than just offering to save the part.

Recent changes to the attachment handling (commit 1546387d) changed
(broke) this. This patch stores the calculated mime-type with the part
and changes the attachment part handlers can use it instead.
This commit is contained in:
Mark Walters 2013-07-31 19:39:05 +01:00 committed by David Bremner
parent 29762dd15e
commit 15f5fc513d

View file

@ -892,6 +892,9 @@ If HIDE is non-nil then initially hide this part."
(notmuch-show-insert-part-header nth mime-type content-type (plist-get part :filename)))) (notmuch-show-insert-part-header nth mime-type content-type (plist-get part :filename))))
(content-beg (point))) (content-beg (point)))
;; Store the computed mime-type for later use (e.g. by attachment handlers).
(plist-put part :computed-type mime-type)
(if (not hide) (if (not hide)
(notmuch-show-insert-bodypart-internal msg part mime-type nth depth button) (notmuch-show-insert-bodypart-internal msg part mime-type nth depth button)
(button-put button :notmuch-lazy-part (button-put button :notmuch-lazy-part
@ -2055,10 +2058,10 @@ caller is responsible for killing this buffer as appropriate."
(message-id (notmuch-show-get-message-id)) (message-id (notmuch-show-get-message-id))
(nth (plist-get part :id)) (nth (plist-get part :id))
(buf (notmuch-show-generate-part-buffer message-id nth)) (buf (notmuch-show-generate-part-buffer message-id nth))
(content-type (plist-get part :content-type)) (computed-type (plist-get part :computed-type))
(filename (plist-get part :filename)) (filename (plist-get part :filename))
(disposition (if filename `(attachment (filename . ,filename))))) (disposition (if filename `(attachment (filename . ,filename)))))
(mm-make-handle buf (list content-type) nil nil disposition))) (mm-make-handle buf (list computed-type) nil nil disposition)))
(defun notmuch-show-apply-to-current-part-handle (fn) (defun notmuch-show-apply-to-current-part-handle (fn)
"Apply FN to an mm-handle for the part containing point. "Apply FN to an mm-handle for the part containing point.