* elmo-filter.el (elmo-folder-unmark-read): Ditto.
* elmo-map.el (elmo-folder-unmark-read): Ditto.
* elmo-multi.el (elmo-folder-unmark-read): Ditto.
* elmo-net.el (elmo-folder-unmark-read): Ditto.
* elmo-pipe.el (elmo-folder-unmark-read): Ditto.
+2002-09-19  Yuuichi Teranishi  <teranisi@gohome.org>
+
+       * elmo.el (elmo-folder-unmark-read): Added argument `ignore-flag'.
+
+       * elmo-filter.el (elmo-folder-unmark-read): Ditto.
+
+       * elmo-map.el (elmo-folder-unmark-read): Ditto.
+
+       * elmo-multi.el (elmo-folder-unmark-read): Ditto.
+
+       * elmo-net.el (elmo-folder-unmark-read): Ditto.
+
+       * elmo-pipe.el (elmo-folder-unmark-read): Ditto.
+
 2002-09-18  Yuuichi Teranishi  <teranisi@gohome.org>
 
        * elmo-imap4.el (elmo-imap4-parse-status): Skip white spaces after
 
 
 (luna-define-method elmo-folder-unmark-read :around ((folder
                                                      elmo-filter-folder)
-                                                    numbers)
+                                                    numbers
+                                                    &optional ignore-flag)
   (elmo-folder-unmark-read (elmo-filter-folder-target-internal folder)
-                          numbers)
+                          numbers ignore-flag)
   (luna-call-next-method))
 
 (luna-define-method elmo-folder-mark-as-important :around ((folder
 
    (elmo-map-folder-numbers-to-locations folder numbers)))
 
 (luna-define-method elmo-folder-unmark-read :before ((folder elmo-map-folder)
-                                                    numbers)
-  (elmo-map-folder-unmark-read
-   folder
-   (elmo-map-folder-numbers-to-locations folder numbers)))
+                                                    numbers
+                                                    &optional ignore-flags)
+  (unless ignore-flags
+    (elmo-map-folder-unmark-read
+     folder
+     (elmo-map-folder-numbers-to-locations folder numbers))))
 
 (luna-define-method elmo-folder-mark-as-read :before ((folder
                                                       elmo-map-folder)
 
 
 (luna-define-method elmo-folder-unmark-read :before ((folder
                                                      elmo-multi-folder)
-                                                    numbers)
+                                                    numbers
+                                                    &optional ignore-flag)
   (dolist (folder-numbers (elmo-multi-make-folder-numbers-list folder numbers))
     (elmo-folder-unmark-read (car folder-numbers)
-                            (cdr folder-numbers))))
+                            (cdr folder-numbers)
+                            ignore-flag)))
 
 (luna-define-method elmo-folder-mark-as-answered :before ((folder
                                                           elmo-multi-folder)
 
                        numbers))))
 
 (luna-define-method elmo-folder-unmark-read :before ((folder elmo-net-folder)
-                                                    numbers)
-  (when (elmo-folder-use-flag-p folder)
+                                                    numbers
+                                                    &optional ignore-flag)
+  (when (and (elmo-folder-use-flag-p folder)
+            (not ignore-flag))
     (if (elmo-folder-plugged-p folder)
        (elmo-folder-send folder 'elmo-folder-unmark-read-plugged numbers)
       (elmo-folder-send folder 'elmo-folder-unmark-read-unplugged numbers))))
 
                            numbers ignore-flag))
 
 (luna-define-method elmo-folder-unmark-read ((folder elmo-pipe-folder)
-                                             numbers)
+                                            numbers
+                                            &optional ignore-flag)
   (elmo-folder-unmark-read (elmo-pipe-folder-dst-internal folder)
-                          numbers))
+                          numbers ignore-flag))
 
 (luna-define-method elmo-folder-unmark-important ((folder elmo-pipe-folder)
                                                  numbers)
 
 FOLDER is the ELMO folder structure.
 NUMBERS is a list of message numbers to be processed.")
 
-(luna-define-generic elmo-folder-unmark-read (folder numbers)
+(luna-define-generic elmo-folder-unmark-read (folder numbers
+                                                    &optional ignore-flags)
   "Un-mark messages as read.
 FOLDER is the ELMO folder structure.
-NUMBERS is a list of message numbers to be processed.")
+NUMBERS is a list of message numbers to be processed.
+If IGNORE-FLAGS is non-nil, folder flags are not updated.")
 
 (luna-define-generic elmo-folder-mark-as-read (folder numbers
                                                      &optional ignore-flags)
   "Mark messages as read.
 FOLDER is the ELMO folder structure.
-NUMBERS is a list of message numbers to be processed.")
+NUMBERS is a list of message numbers to be processed.
+If IGNORE-FLAGS is non-nil, folder flags are not updated.")
 
 (luna-define-generic elmo-folder-unmark-answered (folder numbers)
   "Un-mark messages as answered.
                             number
                             'important))))
 
-(luna-define-method elmo-folder-unmark-read ((folder elmo-folder) numbers)
+(luna-define-method elmo-folder-unmark-read ((folder elmo-folder)
+                                            numbers
+                                            &optional ignore-flags)
   (when (elmo-folder-msgdb-internal folder)
     (dolist (number numbers)
       (elmo-msgdb-unset-status (elmo-folder-msgdb folder)