From: Lars Ingebrigtsen Date: Thu, 26 Jan 2012 18:54:46 +0000 (+0100) Subject: Don't propagate marks to backends that don't have server marks X-Git-Url: https://cgit.sxemacs.org/?a=commitdiff_plain;h=686f9c6fc6d26ce3e254aefad876b41ffe453aa6;p=gnus Don't propagate marks to backends that don't have server marks * gnus-sum.el (gnus-summary-move-article): Don't propagate marks to non-server-marks groups. (gnus-group-make-articles-read): Ditto. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 88b5e0d95..ad27f7a59 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2012-01-26 Lars Ingebrigtsen + * 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). diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 26bd5b0bd..2097dfb14 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -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)))))