Function: rmail-mime-insert

rmail-mime-insert is a byte-compiled function defined in rmailmm.el.gz.

Signature

(rmail-mime-insert ENTITY)

Documentation

Insert a MIME-entity ENTITY in the current buffer.

This function will be called recursively if multiple parts are available.

Source Code

;; Defined in /usr/src/emacs/lisp/mail/rmailmm.el.gz
(defun rmail-mime-insert (entity)
  "Insert a MIME-entity ENTITY in the current buffer.

This function will be called recursively if multiple parts are
available."
  (let ((current (aref (rmail-mime-entity-display entity) 0))
	(new (aref (rmail-mime-entity-display entity) 1)))
    (if (not (eq (rmail-mime-display-header new) 'raw))
	;; Not a raw-mode.  Each handler should handle it.
	(funcall (rmail-mime-entity-handler entity) entity)
      (let ((header (rmail-mime-entity-header entity))
	    ;; (tagline (rmail-mime-entity-tagline entity))
	    (body (rmail-mime-entity-body entity))
	    (beg (point))
	    (segment (rmail-mime-entity-segment (point) entity)))
	;; header
	(if (eq (rmail-mime-display-header current)
		(rmail-mime-display-header new))
	    (goto-char (aref segment 2))
	  (if (rmail-mime-display-header current)
	      (delete-char (- (aref segment 2) (aref segment 1))))
	  (insert-buffer-substring rmail-mime-mbox-buffer
				   (aref header 0) (aref header 1)))
	;; tagline
	(if (rmail-mime-display-tagline current)
	    (delete-char (- (aref segment 3) (aref segment 2))))
	;; body
	(let ((children (rmail-mime-entity-children entity)))
	  (if children
	      (progn
		(put-text-property beg (point) 'rmail-mime-entity entity)
		(dolist (child children)
		  (rmail-mime-insert child)))
	    (if (eq (rmail-mime-display-body current)
		    (rmail-mime-display-body new))
		(forward-char (- (aref segment 4) (aref segment 3)))
	      (if (rmail-mime-display-body current)
		(delete-char (- (aref segment 4) (aref segment 3))))
	      (insert-buffer-substring rmail-mime-mbox-buffer
				       (aref body 0) (aref body 1))
	      (or (bolp) (insert "\n")))
	    (put-text-property beg (point) 'rmail-mime-entity entity)))))
    (setf (aref (rmail-mime-entity-display entity) 0)
          (rmail-mime--copy-display new))))