X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-dop.el;h=abf1bce54792f31ef094bbc1328d6ed6bc0d0242;hb=81851be8a05acbeeafb18fce032f4a9f45d4bd53;hp=413252f9d0ea8777885c95c2077128a069b0984a;hpb=192351f30c4a1cd89b5c5363b86cbf9653ce420d;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-dop.el b/elmo/elmo-dop.el index 413252f..abf1bce 100644 --- a/elmo/elmo-dop.el +++ b/elmo/elmo-dop.el @@ -65,12 +65,12 @@ Automatically loaded/saved.") (defvar elmo-dop-queue-method-name-alist '((elmo-folder-append-buffer-dop-delayed . "Append") (elmo-folder-delete-messages-dop-delayed . "Delete") - (elmo-message-encache-dop . "Encache") - (elmo-create-folder-dop . "Create") - (elmo-folder-mark-as-read-dop . "Read") - (elmo-folder-unmark-read-dop . "Unread") - (elmo-folder-mark-as-important-dop . "Important") - (elmo-folder-unmark-important-dop . "Unimportant"))) + (elmo-message-encache . "Encache") + (elmo-create-folder . "Create") + (elmo-folder-mark-as-read . "Read") + (elmo-folder-unmark-read . "Unread") + (elmo-folder-mark-as-important . "Important") + (elmo-folder-unmark-important . "Unimportant"))) (defmacro elmo-dop-queue-method-name (queue) `(cdr (assq (elmo-dop-queue-method ,queue) @@ -210,8 +210,8 @@ FOLDER is the folder structure." numbers))) t) -(defsubst elmo-message-encache-dop (folder number) - (elmo-dop-queue-append folder 'elmo-message-encache (list number))) +(defsubst elmo-message-encache-dop (folder number &optional read) + (elmo-dop-queue-append folder 'elmo-message-encache (list number read))) (defsubst elmo-create-folder-dop (folder) (elmo-dop-queue-append folder 'elmo-folder-create nil)) @@ -246,18 +246,24 @@ FOLDER is the folder structure." ;;; Delayed operation (executed at online status). (defun elmo-folder-append-buffer-dop-delayed (folder unread number set-number) - (let ((spool-folder (elmo-dop-spool-folder folder))) + (let ((spool-folder (elmo-dop-spool-folder folder)) + failure saved) (with-temp-buffer (elmo-message-fetch spool-folder number (elmo-make-fetch-strategy 'entire) nil (current-buffer) 'unread) (condition-case nil - (elmo-folder-append-buffer folder unread set-number) - (error - ;; Append failed... - (elmo-folder-append-buffer (elmo-make-folder elmo-lost+found-folder) - unread set-number))) - (elmo-folder-delete-messages spool-folder (list number)) + (setq failure (not + (elmo-folder-append-buffer folder unread set-number))) + (error (setq failure t))) + (when failure + ;; Append failed... + (setq saved (elmo-folder-append-buffer + (elmo-make-folder elmo-lost+found-folder) + unread set-number))) + (if (or (not failure) + saved) + (elmo-folder-delete-messages spool-folder (list number))) t))) (defun elmo-folder-delete-messages-dop-delayed (folder number-alist)