Re: Apple Mail multipart message not displayed correctly
Kazuhiro Ito <[email protected]> Sat, 03 Feb 2018 08:01:14 +0900
| Newsgroups | gmane.mail.wanderlust.general |
|---|---|
| Message-ID | <86372jc7yd.wl--xmue__49652.359649963$1517612447$gmane$org@d1.dion.ne.jp> |
> > > I 1 <no description> [multipa/alternativ, 7bit, 109K]
> > > I 2 ><no description> [text/plain, quoted, utf-8, 0.6K]
> > > I 3 ><no description> [multipa/mixed, 7bit, 108K]
> > > I 4 ><no description> [text/html, quoted, utf-8, 5.7K]
> > > I 5 >document.pdf [applica/pdf, base64, 101K]
> > > I 6 ><no description> [text/html, 7bit, us-ascii, 0.4K]
> >
> > Hmm, how can I lower html-score without breaking this message?
>
> If you mean you want Wanderlust shows text/plain content and button
> for application/pdf entity without addition operation, SEMI does not
> provide such customization. You need your custom previewer for
> multipart/alternative entity to do so.
Here is an expample.
(defun mime-display-multipart-for-variant (entity situation)
(let* ((original-major-mode-cell (assq 'major-mode situation))
(default-situation (cdr (assq 'childrens-situation situation))))
(if original-major-mode-cell
(setq default-situation
(cons original-major-mode-cell default-situation)))
(mapc
(lambda (child)
(setq situation (copy-alist (mime-find-entity-preview-situation
child default-situation)))
(mime-display-entity
child (if (eq (cdr (assq 'type situation)) 'multipart)
(put-alist 'body-presentation-method
'mime-display-multipart-for-apple
situation)
(put-alist 'body 'invisible situation))))
(mime-entity-children entity))))
(defun mime-display-multipart/alternative-variant (entity situation)
(let ((original-major-mode-cell (assq 'major-mode situation))
(default-situation
(cdr (assq 'childrens-situation situation)))
(max-score 0)
p pairs
child-situation score)
(when original-major-mode-cell
(setq default-situation
(cons original-major-mode-cell default-situation)))
(setq pairs
(mapcar
(lambda (child)
(setq child-situation
(mime-find-entity-preview-situation
child default-situation))
(when (cdr (assq 'body-presentation-method child-situation))
(setq score (mime-view-entity-score child child-situation))
(when (>= score max-score)
(setq p child
max-score score)
))
(cons child child-situation))
(mime-entity-children entity)))
(or p (setq p (caar pairs)))
(mapc (lambda (pair)
(mime-display-entity
(car pair)
(if (eq p (car pair))
(cdr pair)
(if (eq (cdr (assq 'type (cdr pair))) 'multipart)
(put-alist
'body-presentation-method
'mime-display-multipart-for-variant
(copy-alist (cdr pair)))
(put-alist 'body 'invisible (copy-alist (cdr pair)))))))
pairs)
))
(eval-after-load "mime-view"
'(let ((ctree mime-preview-condition)
(alist '((type . multipart)
(subtype . alternative)
(body . visible)
(body-presentation-method
. mime-display-multipart/alternative-variant)))
tmp)
(while (setq tmp (cdr (assq (cdr (assq (car ctree) alist))
(cdr ctree))))
(setq alist (delq (assq (car ctree) alist) alist))
(setq ctree tmp))
(when (setq tmp (assq (car ctree) alist))
(setcdr ctree (cdr (calist-to-ctree
(cons tmp (delq tmp alist)))))))
)
--
Kazuhiro Ito