Don't propagate marks to backends that don't have server marks
authorLars Ingebrigtsen <larsi@rusty.(none)>
Thu, 26 Jan 2012 18:54:46 +0000 (19:54 +0100)
committerLars Ingebrigtsen <larsi@rusty.(none)>
Thu, 26 Jan 2012 18:54:46 +0000 (19:54 +0100)
* gnus-sum.el (gnus-summary-move-article): Don't propagate marks to
non-server-marks groups.
(gnus-group-make-articles-read): Ditto.

lisp/ChangeLog
lisp/gnus-sum.el

index 88b5e0d..ad27f7a 100644 (file)
@@ -1,5 +1,9 @@
 2012-01-26  Lars Ingebrigtsen  <larsi@gnus.org>
 
+       * gnus-sum.el (gnus-summary-move-article): Don't propagate marks to
+       non-server-marks groups.
+       (gnus-group-make-articles-read): Ditto.
+
        * gnus-srvr.el (gnus-server-prepare): Use it to avoid showing ephemeral
        methods (bug#9676).
 
index 26bd5b0..2097dfb 100644 (file)
@@ -6283,13 +6283,19 @@ The resulting hash table is returned, or nil if no Xrefs were found."
         (entry (gnus-group-entry group))
         (info (nth 2 entry))
         (active (gnus-active group))
+        (set-marks
+         (or gnus-propagate-marks
+             (gnus-method-option-p
+              (gnus-find-method-for-group group)
+              'server-marks)))
         range)
     (if (not entry)
        ;; Group that Gnus doesn't know exists, but still allow the
        ;; backend to set marks.
-       (gnus-request-set-mark
-        group (list (list (gnus-compress-sequence (sort articles #'<))
-                          'add '(read))))
+       (when set-marks
+         (gnus-request-set-mark
+          group (list (list (gnus-compress-sequence (sort articles #'<))
+                            'add '(read)))))
       ;; Normal, subscribed groups.
       (setq range (gnus-compute-read-articles group articles))
       (with-current-buffer gnus-group-buffer
@@ -6298,11 +6304,14 @@ The resulting hash table is returned, or nil if no Xrefs were found."
             (gnus-info-set-marks ',info ',(gnus-info-marks info) t)
             (gnus-info-set-read ',info ',(gnus-info-read info))
             (gnus-get-unread-articles-in-group ',info (gnus-active ,group))
-            (gnus-request-set-mark ,group (list (list ',range 'del '(read))))
+            (when ,set-marks
+              (gnus-request-set-mark
+               ,group (list (list ',range 'del '(read)))))
             (gnus-group-update-group ,group t))))
       ;; Add the read articles to the range.
       (gnus-info-set-read info range)
-      (gnus-request-set-mark group (list (list range 'add '(read))))
+      (when set-marks
+       (gnus-request-set-mark group (list (list range 'add '(read)))))
       ;; Then we have to re-compute how many unread
       ;; articles there are in this group.
       (when active
@@ -10061,7 +10070,11 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
                  (gnus-add-marked-articles
                   to-group 'expire (list to-article) info))
 
-               (when to-marks
+               (when (and to-marks
+                          (or gnus-propagate-marks
+                              (gnus-method-option-p
+                               (gnus-find-method-for-group to-group)
+                               'server-marks)))
                  (gnus-request-set-mark
                   to-group (list (list (list to-article) 'add to-marks)))))