]> git.eshelyaron.com Git - emacs.git/commitdiff
nnml.el, nnfolder.el, nntp.el (*-request-set-mark): Extend syntax with 'set.
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Fri, 26 Nov 2010 02:11:40 +0000 (02:11 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Fri, 26 Nov 2010 02:11:40 +0000 (02:11 +0000)
nnheader.el, nntp.el, nnfolder.el, nnml.el (*-request-set-mark): Refactor out nnheader-update-marks-actions and use it throughout.
nnmaildir.el (nnmaildir-request-set-mark): Be explicit about 'set.
gnus-sum.el (gnus-summary-push-marks-to-backend): Use 'set instead of 'add and 'delete to set backend marks.

lisp/gnus/ChangeLog
lisp/gnus/gnus-sum.el
lisp/gnus/nnfolder.el
lisp/gnus/nnheader.el
lisp/gnus/nnimap.el
lisp/gnus/nnmaildir.el
lisp/gnus/nnml.el
lisp/gnus/nntp.el

index 7769a9c61319a0e9f90cec96778aa7c65c2e4e77..2705413d2c8b48079d54a4ba56ac0d4ac955bba4 100644 (file)
@@ -1,5 +1,18 @@
 2010-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * gnus-sum.el (gnus-summary-push-marks-to-backend): Use 'set instead of
+       'add and 'delete to set backend marks.
+
+       * nnmaildir.el (nnmaildir-request-set-mark): Be explicit about 'set.
+
+       * nnheader.el (nnheader-update-marks-actions): Refactor out.
+
+       * nntp.el (nntp-request-set-mark): Use it.
+
+       * nnfolder.el (nnfolder-request-set-mark): Ditto.
+
+       * nnml.el (nnml-request-set-mark): Ditto.
+
        * nnimap.el (nnimap-last-response-string): Remove the unfolding -- it
        introduces regressions in article selection.
        (nnimap-find-uid-response): New function.
@@ -7,6 +20,13 @@
        (nnimap-request-move-article): Use the UID returned, if any.
        (nnimap-get-groups): Reimplement to work with folded lines.
        (nnimap-find-uid-response): The UID is the last element in the list.
+       (nnimap-request-set-mark): Extend syntax with 'set.
+
+       * nnml.el (nnml-request-set-mark): Ditto.
+
+       * nnfolder.el (nnfolder-request-set-mark): Ditto.
+
+       * nntp.el (nntp-request-set-mark): Ditto.
 
 2010-11-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 
index f6c8d0f8f4a5f8540773abd44a9cbdd99c45ced4..2d679dab24610081025524193a696f0518ae64b9 100644 (file)
@@ -9948,23 +9948,18 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
     (gnus-set-mode-line 'summary)))
 
 (defun gnus-summary-push-marks-to-backend (article)
-  (let ((add nil)
-       (delete nil)
+  (let ((set nil)
        (marks gnus-article-mark-lists))
-    (if (memq article gnus-newsgroup-unreads)
-       (push 'read add)
-      (push 'read delete))
+    (when (memq article gnus-newsgroup-unreads)
+      (push 'read set))
     (while marks
-      (when (eq (gnus-article-mark-to-type (cdar marks)) 'list)
-       (if (memq article (symbol-value
-                          (intern (format "gnus-newsgroup-%s"
-                                          (caar marks)))))
-           (push (cdar marks) add)
-         (push (cdar marks) delete)))
+      (when (and (eq (gnus-article-mark-to-type (cdar marks)) 'list)
+                (memq article (symbol-value
+                               (intern (format "gnus-newsgroup-%s"
+                                               (caar marks))))))
+       (push (cdar marks) set))
       (pop marks))
-    (gnus-request-set-mark gnus-newsgroup-name
-                          `(((,article) add ,add)
-                            ((,article) del ,delete)))))
+    (gnus-request-set-mark gnus-newsgroup-name `(((,article) set ,set)))))
 
 (defun gnus-summary-copy-article (&optional n to-newsgroup select-method)
   "Copy the current article to some other group.
index 668b75a78380e6db46daf3553a59d105dfe306dc..5de8653948f7f47b9d27758eb289ba94b59e3574 100644 (file)
@@ -1186,19 +1186,7 @@ This command does not work if you use short group names."
     (nnfolder-open-server server))
   (unless nnfolder-marks-is-evil
     (nnfolder-open-marks group server)
-    (dolist (action actions)
-      (let ((range (nth 0 action))
-           (what  (nth 1 action))
-           (marks (nth 2 action)))
-       (assert (or (eq what 'add) (eq what 'del)) nil
-               "Unknown request-set-mark action: %s" what)
-       (dolist (mark marks)
-         (setq nnfolder-marks (gnus-update-alist-soft
-                           mark
-                           (funcall (if (eq what 'add) 'gnus-range-add
-                                      'gnus-remove-from-range)
-                                    (cdr (assoc mark nnfolder-marks)) range)
-                           nnfolder-marks)))))
+    (setq nnfolder-marks (nnheader-update-marks-actions nnfolder-marks actions))
     (nnfolder-save-marks group server))
   nil)
 
index 08dc96d945bc044800ec923546828e4b19da8d1a..d34229a467d386c67ea75581673937d95af55e71 100644 (file)
@@ -1078,6 +1078,26 @@ See `find-file-noselect' for the arguments."
                   (truncate nnheader-read-timeout))
                1000))))
 
+(defun nnheader-update-marks-actions (backend-marks actions)
+  (dolist (action actions)
+    (let ((range (nth 0 action))
+         (what  (nth 1 action))
+         (marks (nth 2 action)))
+      (dolist (mark marks)
+       (setq backend-marks
+             (gnus-update-alist-soft
+              mark
+              (cond
+               ((eq what 'add)
+                (gnus-range-add (cdr (assoc mark backend-marks)) range)
+                ((eq what 'del)
+                 (gnus-remove-from-range
+                  (cdr (assoc mark backend-marks)) range))
+                ((eq what 'set)
+                 range)))
+              backend-marks)))))
+  backend-marks)
+
 (when (featurep 'xemacs)
   (require 'nnheaderxm))
 
index 97889bb0a64215fb3e4776989fd93465805a6f50..0a0b413d3d25c25df6878ee4f9bd87af6b1b4c0b 100644 (file)
@@ -941,9 +941,10 @@ textual parts.")
                (setq sequence (nnimap-send-command
                                "UID STORE %s %sFLAGS.SILENT (%s)"
                                (nnimap-article-ranges range)
-                               (if (eq action 'del)
-                                   "-"
-                                 "+")
+                               (cond
+                                ((eq action 'del) "-")
+                                ((eq action 'add) "-")
+                                ((eq action 'set) ""))
                                (mapconcat #'identity flags " ")))))))
        ;; Wait for the last command to complete to avoid later
        ;; syncronisation problems with the stream.
index 97531f876664f26dc19d4f1bdc47169018698ee7..65f33411297c06f8ff7ee51ad14e30b7ce782818 100644 (file)
@@ -1590,7 +1590,7 @@ by nnmaildir-request-article.")
        (nnmaildir--nlist-iterate nlist ranges
                                  (cond ((eq 'del (cadr action)) del-action)
                                        ((eq 'add (cadr action)) add-action)
-                                       (t set-action))))
+                                       ((eq 'set (cadr action)) set-action))))
       nil)))
 
 (defun nnmaildir-close-group (gname &optional server)
index b84ce518a2801c3991959ebc1e26e3e204b93243..46a6d903f7e2b502a0e1978c705b6b13ae822645 100644 (file)
@@ -1033,19 +1033,7 @@ Use the nov database for the current group if available."
   (nnml-possibly-change-directory group server)
   (unless nnml-marks-is-evil
     (nnml-open-marks group server)
-    (dolist (action actions)
-      (let ((range (nth 0 action))
-           (what  (nth 1 action))
-           (marks (nth 2 action)))
-       (assert (or (eq what 'add) (eq what 'del)) nil
-               "Unknown request-set-mark action: %s" what)
-       (dolist (mark marks)
-         (setq nnml-marks (gnus-update-alist-soft
-                           mark
-                           (funcall (if (eq what 'add) 'gnus-range-add
-                                      'gnus-remove-from-range)
-                                    (cdr (assoc mark nnml-marks)) range)
-                           nnml-marks)))))
+    (setq nnml-marks (nnheader-update-marks-actions nnml-marks actions))
     (nnml-save-marks group server))
   nil)
 
index 46cc0d281a6c03cb38742538d17189866ef2d4b0..f37a1c8c48fc349b160c1a178c49c4aab81fb35f 100644 (file)
@@ -1118,19 +1118,7 @@ command whose response triggered the error."
             nntp-marks-file-name)
     (nntp-possibly-create-directory group server)
     (nntp-open-marks group server)
-    (dolist (action actions)
-      (let ((range (nth 0 action))
-           (what  (nth 1 action))
-           (marks (nth 2 action)))
-       (assert (or (eq what 'add) (eq what 'del)) nil
-               "Unknown request-set-mark action: %s" what)
-       (dolist (mark marks)
-         (setq nntp-marks (gnus-update-alist-soft
-                           mark
-                           (funcall (if (eq what 'add) 'gnus-range-add
-                                      'gnus-remove-from-range)
-                                    (cdr (assoc mark nntp-marks)) range)
-                           nntp-marks)))))
+    (setq nntp-marks (nnheader-update-marks-actions nntp-marks actions))
     (nntp-save-marks group server))
   nil)