Function: mh-insert-mime-button
mh-insert-mime-button is a byte-compiled function defined in
mh-mime.el.gz.
Signature
(mh-insert-mime-button HANDLE INDEX DISPLAYED)
Documentation
Insert MIME button for HANDLE.
INDEX is the part number that will be DISPLAYED. It is also used by commands like "K v" which operate on individual MIME parts.
Source Code
;; Defined in /usr/src/emacs/lisp/mh-e/mh-mime.el.gz
;;; Button Display
(defun mh-insert-mime-button (handle index displayed)
"Insert MIME button for HANDLE.
INDEX is the part number that will be DISPLAYED. It is also used
by commands like \"K v\" which operate on individual MIME parts."
;; The button could be displayed by a previous decode. In that case
;; undisplay it if we need a hidden button.
(when (and (mm-handle-displayed-p handle) (not displayed))
(mm-display-part handle))
(let ((name (or (mail-content-type-get (mm-handle-type handle) 'name)
(mail-content-type-get (mm-handle-disposition handle)
'filename)
(mail-content-type-get (mm-handle-type handle) 'url)
""))
(type (mm-handle-media-type handle))
begin end)
(if (string-match ".*/" name) (setq name (substring name (match-end 0))))
;; These vars are passed by dynamic-scoping to
;; mh-mime-button-line-format-alist via gnus-eval-format.
(mh-dlet* ((index index)
(description (mail-decode-encoded-word-string
(or (mm-handle-description handle) "")))
(dots (if (or displayed (mm-handle-displayed-p handle))
" " "..."))
(long-type (concat type (and (not (equal name ""))
(concat "; " name)))))
(unless (equal description "")
(setq long-type (concat " --- " long-type)))
(unless (bolp) (insert "\n"))
(setq begin (point))
(gnus-eval-format
mh-mime-button-line-format mh-mime-button-line-format-alist
`(keymap ,mh-mime-button-map
mh-callback mh-mm-display-part
mh-part ,index
mh-data ,handle)))
(setq end (point))
(widget-convert-button
'link begin end
:mime-handle handle
:action 'mh-widget-press-button
:button-keymap mh-mime-button-map
:help-echo
"Mouse-2 click or press RET (in show buffer) to toggle display")
(dolist (ov (overlays-in begin end))
(overlay-put ov 'evaporate t))))