+ (mime-preview/decode-content)
+ ))
+
+(defun mime-viewer/follow-content ()
+ (interactive)
+ (let ((root-cinfo
+ (mime::preview-content-info/content-info
+ (car mime::preview/content-list)))
+ pc p-beg p-end cinfo rcnum)
+ (let ((rest mime::preview/content-list)
+ b e cell len rc)
+ (if (catch 'tag
+ (while (setq cell (car rest))
+ (setq b (mime::preview-content-info/point-min cell)
+ e (mime::preview-content-info/point-max cell))
+ (setq rest (cdr rest))
+ (if (and (<= b (point))(<= (point) e))
+ (throw 'tag cell)
+ )
+ ))
+ (progn
+ (setq pc cell
+ cinfo (mime::preview-content-info/content-info pc)
+ rcnum (mime::content-info/rcnum cinfo))
+ (setq len (length rcnum))
+ (setq p-beg (mime::preview-content-info/point-min pc)
+ p-end (mime::preview-content-info/point-max pc))
+ (while (and (setq cell (car rest))
+ (progn
+ (setq rc
+ (mime::content-info/rcnum
+ (mime::preview-content-info/content-info
+ cell)))
+ (equal rcnum
+ (nthcdr (- (length rc) len) rc))
+ ))
+ (setq p-end (mime::preview-content-info/point-max cell))
+ (setq rest (cdr rest))
+ ))))
+ (if pc
+ (let* ((mode (mime-preview/get-original-major-mode))
+ (new-name (format "%s-%s" (buffer-name) (reverse rcnum)))
+ new-buf
+ (the-buf (current-buffer))
+ (a-buf mime::preview/article-buffer)
+ (hb (mime::content-info/point-min cinfo))
+ (he (mime::content-info/point-max cinfo))
+ fields from to cc reply-to subj mid f)
+ (save-excursion
+ (set-buffer (setq new-buf (get-buffer-create new-name)))
+ (erase-buffer)
+ (insert-buffer-substring the-buf p-beg p-end)
+ (goto-char (point-min))
+ (if (mime-viewer/header-visible-p rcnum root-cinfo)
+ (delete-region (goto-char (point-min))
+ (if (re-search-forward "^$" nil t)
+ (match-end 0)
+ (point-min)))
+ )
+ (goto-char (point-min))
+ (insert "\n")
+ (goto-char (point-min))
+ (let ((rcnum (mime::content-info/rcnum cinfo)) ci str)
+ (while (progn
+ (setq str
+ (save-excursion
+ (set-buffer a-buf)
+ (setq ci (mime-article/rcnum-to-cinfo rcnum))
+ (save-restriction
+ (narrow-to-region
+ (mime::content-info/point-min ci)
+ (mime::content-info/point-max ci)
+ )
+ (std11-header-string-except
+ (concat "^"
+ (apply (function regexp-or) fields)
+ ":") ""))))
+ (if (string-equal (mime::content-info/type ci)
+ "message/rfc822")
+ nil
+ (if str
+ (insert str)
+ )
+ rcnum))
+ (setq fields (std11-collect-field-names)
+ rcnum (cdr rcnum))
+ )
+ )
+ (let ((rest mime-viewer/following-required-fields-list))
+ (while rest
+ (let ((field-name (car rest)))
+ (or (std11-field-body field-name)
+ (insert
+ (format
+ (concat field-name
+ ": "
+ (save-excursion
+ (set-buffer the-buf)
+ (set-buffer mime::preview/mother-buffer)
+ (set-buffer mime::preview/article-buffer)
+ (std11-field-body field-name)
+ )
+ "\n")))
+ ))
+ (setq rest (cdr rest))
+ ))
+ (mime/decode-message-header)
+ )
+ (let ((f (cdr (assq mode mime-viewer/following-method-alist))))
+ (if (functionp f)
+ (funcall f new-buf)
+ (message
+ (format
+ "Sorry, following method for %s is not implemented yet."
+ mode))
+ ))
+ ))))
+
+(defun mime-viewer/display-x-face ()
+ (interactive)
+ (save-window-excursion
+ (set-buffer mime::preview/article-buffer)
+ (mime-viewer/x-face-function)