Function: mh-mm-display-part
mh-mm-display-part is a byte-compiled function defined in
mh-mime.el.gz.
Signature
(mh-mm-display-part HANDLE)
Documentation
Toggle display of button for MIME part, HANDLE.
Source Code
;; Defined in /usr/src/emacs/lisp/mh-e/mh-mime.el.gz
;; There is a bug in Gnus inline image display due to which an extra line
;; gets inserted every time it is viewed. To work around that problem we are
;; using an extra property 'mh-region to remember the region that is added
;; when the button is clicked. The region is then deleted to make sure that
;; no extra lines get inserted.
(defun mh-mm-display-part (handle)
"Toggle display of button for MIME part, HANDLE."
(beginning-of-line)
(let ((id (get-text-property (point) 'mh-part))
(point (point))
(window (selected-window))
(mail-parse-charset 'nil)
(mail-parse-ignored-charsets nil)
region buffer-read-only)
(save-excursion
(unwind-protect
(let ((win (get-buffer-window (current-buffer) t)))
(when win
(select-window win))
(goto-char point)
(if (mm-handle-displayed-p handle)
;; This will remove the part.
(progn
;; Delete the button and displayed part (if any)
(let ((region (get-text-property point 'mh-region)))
(when region
(remove-images (car region) (cdr region)))
(mm-display-part handle)
(when region
(delete-region (car region) (cdr region))))
;; Delete button (if it still remains). This happens for
;; externally displayed parts where the previous step does
;; nothing.
(unless (eolp)
(delete-region (point) (progn (forward-line) (point)))))
(save-restriction
(delete-region (point) (progn (forward-line 1) (point)))
(narrow-to-region (point) (point))
;; Maybe we need another unwind-protect here.
(when (equal (mm-handle-media-supertype handle) "image")
(insert "\n"))
(when (and (not (eq (ignore-errors (mm-display-part handle))
'inline))
(equal (mm-handle-media-supertype handle)
"image"))
(goto-char (point-min))
(delete-char 1))
(when (equal (mm-handle-media-supertype handle) "text")
(when (eq mh-highlight-citation-style 'gnus)
(mh-gnus-article-highlight-citation))
(mh-display-smileys)
(mh-display-emphasis)
(mh-signature-highlight handle))
(setq region (cons (progn (goto-char (point-min))
(point-marker))
(progn (goto-char (point-max))
(point-marker)))))))
(when (window-live-p window)
(select-window window))
(goto-char point)
(beginning-of-line)
(mh-insert-mime-button handle id (mm-handle-displayed-p handle))
(goto-char point)
(when region
(add-text-properties (line-beginning-position)
(line-end-position)
`(mh-region ,region)))))))