* elmo.el (elmo-message-fetch-with-cache-process): Don't call
[elisp/wanderlust.git] / elmo / elmo-mime.el
index 9efb463..d338f7d 100644 (file)
@@ -213,7 +213,7 @@ value is used."
 
 (defun elmo-mime-message-display (folder number viewbuf rawbuf original-mode
                                         &optional ignore-cache unread keymap)
-  "Display MIME message. 
+  "Display MIME message.
 A message in the FOLDER with NUMBER is displayed on the VIEWBUF using RAWBUF.
 VIEWBUF is a view buffer and RAWBUF is a raw buffer.
 ORIGINAL is the major mode of RAWBUF.
@@ -224,11 +224,11 @@ Return non-nil if not entire message was fetched."
   (let (mime-display-header-hook ; Do nothing.
        (elmo-message-displaying t)
        entity strategy)
-    (setq entity (elmo-msgdb-overview-get-entity number
-                                                (elmo-folder-msgdb
-                                                 folder)))
-    (setq strategy (elmo-find-fetch-strategy folder entity
-                                            ignore-cache))
+    (unless (zerop (elmo-folder-length folder))
+      (setq entity (elmo-message-entity folder number)))
+    (setq strategy (if entity (elmo-find-fetch-strategy folder entity
+                                                       ignore-cache)
+                    (elmo-make-fetch-strategy 'entire)))
     (mime-display-message
      (mime-open-entity
       (if (and strategy
@@ -246,7 +246,7 @@ Return non-nil if not entire message was fetched."
 
 (defun elmo-mime-display-as-is (folder number viewbuf rawbuf original-mode
                                       &optional ignore-cache unread keymap)
-  "Display MIME message. 
+  "Display MIME message.
 A message in the FOLDER with NUMBER is displayed on the VIEWBUF using RAWBUF.
 VIEWBUF is a view buffer and RAWBUF is a raw buffer.
 ORIGINAL is the major mode of RAWBUF.
@@ -254,25 +254,26 @@ If optional argument IGNORE-CACHE is specified, existing cache is ignored.
 If second optional argument UNREAD is specified, message is displayed but
 keep it as unread.
 Return non-nil if cache is used."
-  (let ((entity (elmo-msgdb-overview-get-entity number
-                                               (elmo-folder-msgdb folder)))
+  (let ((entity (elmo-msgdb-message-entity (elmo-folder-msgdb folder) number))
        mime-display-header-hook ; Do nothing.
        cache-file strategy use-cache)
-    (setq cache-file (elmo-file-cache-get
-                     (elmo-msgdb-overview-entity-get-id entity)))
-    (setq use-cache (and (elmo-message-use-cache-p folder number)
-                        (eq (elmo-file-cache-status cache-file) 'entire)))
+    (when entity
+      (setq cache-file (elmo-file-cache-get
+                       (elmo-message-entity-field entity 'message-id)))
+      (setq use-cache (and (elmo-message-use-cache-p folder number)
+                          (eq (elmo-file-cache-status cache-file) 'entire))))
     (setq strategy (elmo-make-fetch-strategy
-                   'entire use-cache (elmo-message-use-cache-p folder number)
-                   (elmo-file-cache-path
-                    cache-file)))
+                   'entire use-cache
+                   (elmo-message-use-cache-p folder number)
+                   (elmo-file-cache-path cache-file)))
     (elmo-mime-display-as-is-internal
      (mime-open-entity
       'elmo-buffer
       (elmo-make-mime-message-location
        folder number strategy rawbuf unread))
      viewbuf nil keymap original-mode)
-    (elmo-fetch-strategy-use-cache strategy)))
+    (when strategy
+      (elmo-fetch-strategy-use-cache strategy))))
 
 ;; Replacement of mime-display-message.
 (defun elmo-mime-display-as-is-internal (message