X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fgnus-start.el;h=e5e2468058c37a7672addac92164c6400542868f;hb=d7925de009d5e3047e07e52657d7312d9f97979c;hp=7517c871c7d3972ab6bce534532f1c3e551a22b3;hpb=3531c0498ec33fe82f2e1004ef7ff90cdbf869c1;p=gnus diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 7517c871c..e5e246805 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -380,13 +380,6 @@ disc." :group 'gnus-newsrc :type 'boolean) -(defcustom gnus-use-backend-marks nil - "If non-nil, Gnus will store and retrieve marks from the backends. -This means that marks will be stored both in .newsrc.eld and in -the backend, and will slow operation down somewhat." - :group 'gnus-newsrc - :type 'boolean) - (defcustom gnus-check-bogus-groups-hook nil "A hook run after removing bogus groups." :group 'gnus-start-server @@ -1509,7 +1502,7 @@ If SCAN, request a scan of that group as well." (gnus-activate-group (gnus-info-group info) nil t)) ;; Allow backends to update marks, - (when gnus-use-backend-marks + (when gnus-propagate-marks (let ((method (inline (gnus-find-method-for-group (gnus-info-group info))))) (when (gnus-check-backend-function 'request-marks (car method)) @@ -1682,7 +1675,20 @@ If SCAN, request a scan of that group as well." (lambda (c1 c2) (< (gnus-method-rank (cadr c1) (car c1)) (gnus-method-rank (cadr c2) (car c2)))))) - + ;; Go through the list of servers and possibly extend methods that + ;; aren't equal (and that need extension; i.e., they are async). + (let ((methods nil)) + (dolist (elem type-cache) + (destructuring-bind (method method-type infos dummy) elem + (let ((gnus-opened-servers methods)) + (when (and (gnus-similar-server-opened method) + (gnus-check-backend-function + 'retrieve-group-data-early (car method))) + (setq method (gnus-server-extend-method + (gnus-info-group (car infos)) + method)) + (setcar elem method)) + (push (list method 'ok) methods))))) ;; Start early async retrieval of data. (dolist (elem type-cache) (destructuring-bind (method method-type infos dummy) elem @@ -1705,6 +1711,15 @@ If SCAN, request a scan of that group as well." (setcar (nthcdr 3 elem) (gnus-retrieve-group-data-early method infos))))))) + ;; If we have primary/secondary select methods, but no groups from + ;; them, we still want to issue a retrieval request from them. + (dolist (method (cons gnus-select-method + gnus-secondary-select-methods)) + (when (and (not (assoc method type-cache)) + (gnus-check-backend-function 'request-list (car method))) + (with-current-buffer nntp-server-buffer + (gnus-read-active-file-1 method nil)))) + ;; Do the rest of the retrieval. (dolist (elem type-cache) (destructuring-bind (method method-type infos early-data) elem @@ -1747,14 +1762,12 @@ If SCAN, request a scan of that group as well." ;; methods. ((and (gnus-check-backend-function 'finish-retrieve-group-infos (car method)) - infos (or (not (gnus-agent-method-p method)) (gnus-online method))) (gnus-finish-retrieve-group-infos method infos early-data) (gnus-agent-save-active method)) ;; Most backends have -retrieve-groups. - ((and (gnus-check-backend-function 'retrieve-groups (car method)) - infos) + ((gnus-check-backend-function 'retrieve-groups (car method)) (when (gnus-check-backend-function 'request-scan (car method)) (gnus-request-scan nil method)) (let (groups)