Function: gnus-mime-display-alternative
gnus-mime-display-alternative is a byte-compiled function defined in
gnus-art.el.gz.
Signature
(gnus-mime-display-alternative HANDLES &optional PREFERRED IBEGEND ID)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-art.el.gz
(defun gnus-mime-display-alternative (handles &optional preferred ibegend id)
(let* ((preferred (or preferred (mm-preferred-alternative handles)))
(ihandles handles)
(point (point))
(inhibit-read-only t) begend not-pref) ;; from
(save-window-excursion
(save-restriction
(when ibegend
(narrow-to-region (car ibegend)
(or (cdr ibegend)
(progn
(goto-char (car ibegend))
(forward-line 2)
(point))))
(delete-region (point-min) (point-max))
(mm-remove-parts handles))
(setq begend (list (point-marker)))
;; Do the toggle.
(setq not-pref (or (cadr (member preferred ihandles))
(car ihandles)))
(when (or ibegend
(not preferred)
(not (gnus-unbuttonized-mime-type-p
"multipart/alternative")))
(add-text-properties
;; (setq from
(point);; )
(progn
(insert (format "%d. " id))
(point))
(let ((gamha gnus-article-mime-handle-alist))
`(gnus-callback
,(lambda (_handles)
(unless (not ibegend)
(setq gnus-article-mime-handle-alist gamha))
(gnus-mime-display-alternative
ihandles not-pref begend id))
keymap ,gnus-mime-button-map
mouse-face ,gnus-article-mouse-face
face ,gnus-article-button-face
follow-link t
gnus-part ,id
article-type multipart
rear-nonsticky t)))
;; Do the handles
(dolist (handle handles)
(add-text-properties
;; (setq from
(point) ;; )
(progn
(insert (format "(%c) %-18s"
(if (equal handle preferred) ?* ? )
(mm-handle-media-type handle)))
(point))
(let ((gamha gnus-article-mime-handle-alist))
`(gnus-callback
,(lambda (_handles)
(unless (not ibegend)
(setq gnus-article-mime-handle-alist gamha))
(gnus-mime-display-alternative
ihandles handle begend id))
keymap ,gnus-mime-button-map
mouse-face ,gnus-article-mouse-face
face ,gnus-article-button-face
follow-link t
gnus-part ,id
button t
category t
gnus-data ,handle
rear-nonsticky t)))
(insert " "))
(insert "\n\n"))
(when preferred
(if (stringp (car preferred))
(gnus-display-mime preferred)
(let ((mail-parse-charset gnus-newsgroup-charset)
(mail-parse-ignored-charsets
(and (buffer-live-p gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
gnus-newsgroup-ignored-charsets))))
(gnus-bind-mm-vars (mm-display-part preferred))
;; Do highlighting.
(save-excursion
(save-restriction
(narrow-to-region (car begend) (point-max))
(gnus-treat-article
nil (length gnus-article-mime-handle-alist)
(gnus-article-mime-total-parts)
(mm-handle-media-type preferred))))))
(goto-char (point-max))
(setcdr begend (point-marker)))))
(when ibegend
(goto-char point)))
;; Redraw attachment buttons in the header.
(when gnus-mime-display-attachment-buttons-in-header
(gnus-mime-buttonize-attachments-in-header)))