(rmail-show-mime-message): Set `rmail-revert' to `revert-buffer-function'.
[elisp/lemi.git] / mail / rmail-mime.el
index 53e8d33..e49c683 100644 (file)
   (insert-buffer-substring original-buffer start end)
   (mime-decode-header-in-buffer rmail-enable-mime))
 
-(defun rmail-decode-mime-message (decoded-buffer original-buffer start end)
+(defun rmail-decode-mime-message (decoded-buffer original-buffer msg)
   (save-excursion
     (set-buffer original-buffer)
     (save-restriction
-      (narrow-to-region start end)
-      (mime-view-buffer nil decoded-buffer)))
+      (narrow-to-region (rmail-msgbeg msg)
+                       (rmail-msgend msg))
+      (setq mime-message-structure
+           (mime-open-entity 'babyl original-buffer))
+      (mime-display-message mime-message-structure decoded-buffer)))
   (set-buffer decoded-buffer))
 
 (defun rmail-view-kill-rmail-buffer ()
@@ -49,6 +52,8 @@
   (let ((abuf (current-buffer))
        (buf-name (concat (buffer-name) "-view"))
        buf win)
+    (narrow-to-region (rmail-msgbeg rmail-current-message)
+                     (rmail-msgend rmail-current-message))
     (setq mime-message-structure
          (mime-open-entity 'babyl abuf))
     (set-buffer (mime-display-message mime-message-structure
@@ -80,6 +85,8 @@
            rmail-current-message))
     (make-local-variable 'kill-buffer-hook)
     (add-hook 'kill-buffer-hook 'rmail-view-kill-rmail-buffer)
+    (make-local-variable 'revert-buffer-function)
+    (setq revert-buffer-function 'rmail-revert)
     (let ((mode-line
           (with-current-buffer abuf
             (setq rmail-view-buffer buf)
   (mime-insert-entity (with-current-buffer forward-buffer
                        mime-message-structure)))
 
+(defun rmail-insert-mime-resent-message (forward-buffer)
+  (mime-insert-entity (with-current-buffer forward-buffer
+                       mime-message-structure)))
+
 (defun rmail-enable-mime ()
   (interactive)
   (setq rmail-enable-mime t)
   "Search the message of number MSG for REGEXP.
 If the search succeeds, return non-nil.  Otherwise, return nil."
   (save-excursion
-    (rmail-decode-mime-message " *RMAIL-temp-VIEW*"
-                              (current-buffer)
-                              (if (search-forward "\n*** EOOH ***\n"
-                                                  (rmail-msgend msg) t)
-                                  (match-end 0)
-                                (point))
-                              (rmail-msgend msg))
+    (rmail-decode-mime-message " *RMAIL-temp-VIEW*" (current-buffer) msg)
     (goto-char (point-min))
     (prog1 (re-search-forward regexp nil t)
       (kill-buffer " *RMAIL-temp-VIEW*"))))
 
-(defun rmail-search-mime-header (msg beg end regexp)
+(defun rmail-search-mime-header (msg regexp limit)
   "Search the message header of number MSG for REGEXP.
+The current point is the beginninf of header,
+and LIMIT is the end position of header.
 If the search succeeds, return non-nil.  Otherwise, return nil."
   (save-excursion
-    (rmail-decode-header " *RMAIL-temp-VIEW*"
-                        (current-buffer)
-                        beg end)
+    (rmail-decode-header " *RMAIL-temp-VIEW*" (current-buffer) (point) limit)
     (goto-char (point-min))
     (prog1 (re-search-forward regexp nil t)
       (kill-buffer " *RMAIL-temp-VIEW*"))))
@@ -167,7 +172,16 @@ If the search succeeds, return non-nil.  Otherwise, return nil."
 (eval-after-load "rmail"
   '(progn
      (define-key rmail-mode-map "v" 'rmail-enable-mime)
-     (setq rmail-show-mime-function (function rmail-show-mime-message))
+     (setq rmail-show-mime-function
+          (function rmail-show-mime-message)
+          rmail-insert-mime-forwarded-message-function
+          (function rmail-insert-mime-forwarded-message)
+          rmail-insert-mime-resent-message-function
+          (function rmail-insert-mime-resent-message)
+          rmail-search-mime-message-function
+          (function rmail-search-mime-message)
+          rmail-search-mime-header-function
+          (function rmail-search-mime-header))
      (unless rmail-view-mode-map
        (setq rmail-view-mode-map (mime-view-define-keymap rmail-mode-map))
        (define-key rmail-view-mode-map