Added description about wl-folder-use-frame and wl-summary-use-frame.
[elisp/wanderlust.git] / elmo / elmo-pipe.el
index aacdb35..6ed21e9 100644 (file)
@@ -1,6 +1,6 @@
 ;;; elmo-pipe.el -- PIPE Interface for ELMO.
 
-;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
 
 ;; Author: Yuuichi Teranishi <teranisi@gohome.org>
 ;; Keywords: mail, net news
 
 (require 'elmo-msgdb)
 
-(defsubst elmo-pipe-spec-src (spec)
-  (nth 1 spec))
-
-(defsubst elmo-pipe-spec-dst (spec)
-  (nth 2 spec))
-
 (defalias 'elmo-pipe-msgdb-create 'elmo-pipe-msgdb-create-as-numlist)
 
 (defun elmo-pipe-msgdb-create-as-numlist (spec numlist new-mark already-mark
-                                              seen-mark important-mark 
+                                              seen-mark important-mark
                                               seen-list)
   (elmo-msgdb-create-as-numlist (elmo-pipe-spec-dst spec)
                                numlist new-mark already-mark
 (defun elmo-pipe-append-msg (spec string &optional msg no-see)
   (elmo-append-msg (elmo-pipe-spec-dst spec) string))
 
-(defun elmo-pipe-read-msg (spec number outbuf)
+(defun elmo-pipe-read-msg (spec number outbuf &optional msgdb unread)
   (elmo-call-func (elmo-pipe-spec-dst spec)
-                 "read-msg" 
-                 number outbuf))
+                 "read-msg"
+                 number outbuf msgdb unread))
 
 (defun elmo-pipe-delete-msgs (spec msgs)
   (elmo-delete-msgs (elmo-pipe-spec-dst spec) msgs))
 (defvar elmo-pipe-drained-hook nil "A hook called when the pipe is flushed.")
 
 (defun elmo-pipe-drain (src dst)
-  (let ((msgdb (elmo-msgdb-load src))
-       elmo-nntp-use-cache 
-       elmo-imap4-use-cache
-       elmo-pop3-use-cache) ; Inhibit caching while moving messages.
+  "Move all messages of SRC to DST."
+  (let ((elmo-inhibit-read-cache t); Inhibit caching while moving messages.
+       elmo-pop3-use-uidl) ; No need to use UIDL
     (message "Checking %s..." src)
-    (elmo-move-msgs src (elmo-list-folder src) dst msgdb)
-    (elmo-msgdb-save src msgdb)
+    (let ((srclist (elmo-list-folder src))
+         (msgdb (elmo-msgdb-load src)))
+      (elmo-move-msgs src srclist dst msgdb)
+      ;; Don't save msgdb here.
+      ;; Because summary view of original folder is not updated yet.
+      ;; (elmo-msgdb-save src msgdb)
+      (elmo-commit src))
     (run-hooks 'elmo-pipe-drained-hook)))
 
-(defun elmo-pipe-list-folder (spec)
+(defun elmo-pipe-list-folder (spec &optional nohide)
   (elmo-pipe-drain (elmo-pipe-spec-src spec)
                   (elmo-pipe-spec-dst spec))
-  (elmo-list-folder (elmo-pipe-spec-dst spec)))
-
-(defun elmo-pipe-list-folder-unread (spec mark-alist unread-marks)
-  (elmo-list-folder-unread (elmo-pipe-spec-dst spec) mark-alist unread-marks))
+  (let ((killed (and elmo-use-killed-list
+                    (elmo-msgdb-killed-list-load
+                     (elmo-msgdb-expand-path spec))))
+       numbers)
+    (setq numbers (elmo-list-folder (elmo-pipe-spec-dst spec)))
+    (elmo-living-messages numbers killed)))
+
+(defun elmo-pipe-list-folder-unread (spec number-alist mark-alist unread-marks)
+  (elmo-list-folder-unread (elmo-pipe-spec-dst spec)
+                          number-alist mark-alist unread-marks))
   
-(defun elmo-pipe-list-folder-important (spec overview)
-  (elmo-list-folder-important (elmo-pipe-spec-dst spec) overview))
+(defun elmo-pipe-list-folder-important (spec number-alist)
+  (elmo-list-folder-important (elmo-pipe-spec-dst spec) number-alist))
 
 (defun elmo-pipe-max-of-folder (spec)
-  (let ((src-length (length (elmo-list-folder (elmo-pipe-spec-src spec))))
-       (dst-list (elmo-list-folder (elmo-pipe-spec-dst spec))))
+  (let* (elmo-pop3-use-uidl
+        (src-length (length (elmo-list-folder (elmo-pipe-spec-src spec))))
+        (dst-list (elmo-list-folder (elmo-pipe-spec-dst spec))))
     (cons (+ src-length (elmo-max-of-list dst-list))
          (+ src-length (length dst-list)))))
 
   (elmo-get-msg-filename (elmo-pipe-spec-dst spec) number loc-alist))
 
 (defun elmo-pipe-sync-number-alist (spec number-alist)
-  (elmo-call-func (elmo-pipe-spec-src spec) 
+  (elmo-call-func (elmo-pipe-spec-src spec)
                  "sync-number-alist" number-alist)) ; ??
 
 (defun elmo-pipe-server-diff (spec)
   nil)
 
-(provide 'elmo-pipe)
+(defalias 'elmo-pipe-folder-diff 'elmo-generic-folder-diff)
+
+(require 'product)
+(product-provide (provide 'elmo-pipe) (require 'elmo-version))
 
 ;;; elmo-pipe.el ends here