X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-dop.el;h=c63ec32d27e61ce8bb487c997ea71f5f6a6dbdf2;hb=6e975630f95d66685db27e54e4fb2cc269b634f8;hp=abf1bce54792f31ef094bbc1328d6ed6bc0d0242;hpb=e7d43889fc83322e2ad9306e7a17c95a7ff9d455;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-dop.el b/elmo/elmo-dop.el index abf1bce..c63ec32 100644 --- a/elmo/elmo-dop.el +++ b/elmo/elmo-dop.el @@ -1,4 +1,4 @@ -;;; elmo-dop.el -- Modules for Disconnected Operations on ELMO. +;;; elmo-dop.el --- Modules for Disconnected Operations on ELMO. ;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi @@ -24,10 +24,10 @@ ;; ;;; Commentary: -;; +;; ;;; Code: -;; +;; (require 'elmo) (require 'elmo-vars) @@ -88,10 +88,12 @@ even an operation concerns the unplugged folder." ;; obsolete (unless (or (null queue) (vectorp (car queue))) - (when (y-or-n-p "Saved queue is old version(2.4). Clear all pending operations? ") - (setq elmo-dop-queue nil) - (message "All pending operations are cleared.") - (elmo-dop-queue-save))) + (if (y-or-n-p "Saved queue is old version(2.6). Clear all pending operations? ") + (progn + (setq elmo-dop-queue nil) + (message "All pending operations are cleared.") + (elmo-dop-queue-save)) + (error "Please use 2.6 or earlier."))) (setq count (length queue)) (when (> count 0) (if (elmo-y-or-n-p @@ -114,10 +116,12 @@ even an operation concerns the unplugged folder." (progn (apply (elmo-dop-queue-method (car queue)) (prog1 - (setq folder + (setq folder (elmo-make-folder (elmo-dop-queue-fname (car queue)))) - (elmo-folder-open folder)) + (elmo-folder-open folder) + (unless (elmo-folder-plugged-p folder) + (error "Unplugged."))) (elmo-dop-queue-arguments (car queue))) (elmo-folder-close folder)) (quit (setq failure t)) @@ -129,7 +133,7 @@ even an operation concerns the unplugged folder." (setq queue (cdr queue))) (message "%d/%d operation(s) are performed successfully." performed num) - (sit-for 0) ; + (sit-for 0) ; (elmo-dop-queue-save))) (if (elmo-y-or-n-p "Clear all pending operations? " (not elmo-dop-flush-confirm) t) @@ -140,10 +144,29 @@ even an operation concerns the unplugged folder." (message ""))) count))) -(defvar elmo-dop-merge-funcs nil) (defun elmo-dop-queue-merge () - ;; XXXX Not implemented yet. - ) + (let ((queue elmo-dop-queue) + new-queue match-queue que) + (while (setq que (car queue)) + (if (and + (assq (elmo-dop-queue-method que) + elmo-dop-queue-method-name-alist) + (setq match-queue + (car (delete nil + (mapcar '(lambda (nqueue) + (if (and + (string= (elmo-dop-queue-fname que) + (elmo-dop-queue-fname nqueue)) + (string= (elmo-dop-queue-method que) + (elmo-dop-queue-method nqueue))) + nqueue)) + new-queue))))) + (setcar (elmo-dop-queue-arguments match-queue) + (append (car (elmo-dop-queue-arguments match-queue)) + (car (elmo-dop-queue-arguments que)))) + (setq new-queue (nconc new-queue (list que)))) + (setq queue (cdr queue)) ) + (setq elmo-dop-queue new-queue))) ;;; dop spool folder (defmacro elmo-dop-spool-folder (folder) @@ -168,7 +191,7 @@ Return a message number." (elmo-localdir-folder-directory-internal folder)) nil 'no-msg) new-number)) - + (defun elmo-dop-spool-folder-list-messages (folder) "List messages in the dop spool folder. @@ -252,7 +275,7 @@ FOLDER is the folder structure." (elmo-message-fetch spool-folder number (elmo-make-fetch-strategy 'entire) nil (current-buffer) 'unread) - (condition-case nil + (condition-case nil (setq failure (not (elmo-folder-append-buffer folder unread set-number))) (error (setq failure t))) @@ -271,7 +294,7 @@ FOLDER is the folder structure." folder ;; messages are deleted only if message-id is not changed. (mapcar 'car - (elmo-delete-if + (elmo-delete-if (lambda (pair) (not (string= (cdr pair)