Merge following change from main trunk.
[elisp/wanderlust.git] / elmo / elmo-mark.el
index 9fcc326..35352db 100644 (file)
@@ -1,4 +1,4 @@
-;;; elmo-mark.el -- Global mark folder for ELMO.
+;;; elmo-mark.el --- Global mark folder for ELMO.
 
 ;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
 
 ;;
 
 ;;; Commentary:
-;; 
+;;
 
 ;;; Code:
-;; 
+;;
 (require 'elmo)
 (require 'elmo-map)
 
    elmo-mark-default-mark)
   folder)
 
+(luna-define-method elmo-folder-have-subfolder-p ((folder elmo-mark-folder))
+  nil)
+
 (luna-define-method elmo-folder-expand-msgdb-path ((folder
                                                    elmo-mark-folder))
   (expand-file-name "mark"
                    (expand-file-name "internal"
-                                     elmo-msgdb-dir)))
+                                     elmo-msgdb-directory)))
 
-(luna-define-method elmo-map-folder-list-message-locations 
+(luna-define-method elmo-map-folder-list-message-locations
   ((folder elmo-mark-folder))
   (elmo-mark-folder-list-message-locations folder))
 
   (let (result)
     (dolist (pair (or elmo-msgdb-global-mark-alist
                      (setq elmo-msgdb-global-mark-alist
-                           (elmo-object-load 
+                           (elmo-object-load
                             (expand-file-name
                              elmo-msgdb-global-mark-filename
-                             elmo-msgdb-dir)))))
+                             elmo-msgdb-directory)))))
       (if (string= (elmo-mark-folder-mark-internal folder)
                   (cdr pair))
          (setq result (cons (car pair) result))))
         dir)
     (when path
       (setq dir (directory-file-name (file-name-directory path)))
-      (if (not (file-exists-p dir))
-         (elmo-make-directory dir))
-      (as-binary-output-file (write-region (point-min) (point-max)
-                                          path nil 'no-msg)))
-    (elmo-msgdb-global-mark-set msgid 
+      (unless (file-exists-p dir)
+       (elmo-make-directory dir))
+      (when (file-writable-p path)
+       (write-region-as-binary (point-min) (point-max)
+                               path nil 'no-msg)))
+    (elmo-msgdb-global-mark-set msgid
                                (elmo-mark-folder-mark-internal folder))))
 
 (luna-define-method elmo-map-folder-delete-messages ((folder elmo-mark-folder)
   (dolist (location locations)
     (elmo-msgdb-global-mark-delete location)))
 
-(luna-define-method elmo-map-message-fetch ((folder elmo-mark-folder)
-                                           location strategy &optional
-                                           section outbuf unseen)
-  (elmo-mark-folder-map-message-fetch folder location strategy
-                                     section outbuf unseen))
+(luna-define-method elmo-message-fetch-with-cache-process
+  ((folder elmo-mark-folder) number strategy &optional section unseen)
+  ;; disbable cache process
+  (elmo-message-fetch-internal folder number strategy section unseen))
 
-(defun elmo-mark-folder-map-message-fetch (folder location strategy
-                                                 section outbuf unseen)
+(luna-define-method elmo-map-message-fetch ((folder elmo-mark-folder)
+                                           location strategy
+                                           &optional section unseen)
   (let ((file (elmo-file-cache-get-path location)))
     (when (file-exists-p file)
-      (if outbuf
-         (with-current-buffer outbuf
-           (erase-buffer)
-           (insert-file-contents-as-binary file)
-           (elmo-delete-cr-buffer)
-           t)
-       (with-temp-buffer
-         (insert-file-contents-as-binary file)
-         (elmo-delete-cr-buffer)
-         (buffer-string))))))
+      (insert-file-contents-as-binary file))))
 
 (luna-define-method elmo-folder-exists-p ((folder elmo-mark-folder))
   t)
 
+(luna-define-method elmo-folder-writable-p ((folder elmo-mark-folder))
+  t)
+
 (luna-define-method elmo-folder-search ((folder elmo-mark-folder)
                                        condition &optional from-msgs)
   (let* ((msgs (or from-msgs (elmo-folder-list-messages folder)))
         file
         matched
         case-fold-search)
-    (setq num (length msgs))
     (while msgs
       (if (and (setq file (elmo-message-file-name folder (car msgs)))
               (file-exists-p file)
 
 ;;; To override elmo-map-folder methods.
 (luna-define-method elmo-folder-list-unreads-internal
-  ((folder elmo-mark-folder) unread-marks)
-  t)
-
-(luna-define-method elmo-folder-list-importants-internal
-  ((folder elmo-mark-folder) important-mark)
+  ((folder elmo-mark-folder) unread-marks &optional mark-alist)
   t)
 
 (luna-define-method elmo-folder-unmark-important ((folder elmo-mark-folder)