2010-09-18 Lars Magne Ingebrigtsen <larsi@gnus.org>
+ * gnus-sum.el (gnus-select-newsgroup): Indent.
+
+ * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
+ in.
+ (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
+ nothing.
+
+ * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
+ from methods that are denied.
+
+ * gnus-int.el (gnus-method-denied-p): New function.
+
* nnimap.el (nnimap-open-connection): Use auth-sources to query and
store the password instead of netrc.
(nnimap-open-connection): Don't error out when we can't make a
;;; Interface functions to the backends.
;;;
+(defun gnus-method-denied-p (method)
+ (eq (nth 1 (assoc method gnus-opened-servers))
+ 'denied))
+
(defun gnus-open-server (gnus-command-method)
"Open a connection to GNUS-COMMAND-METHOD."
(when (stringp gnus-command-method)
(dolist (elem type-cache)
(destructuring-bind (method method-type infos dummy) elem
(when (and method infos
+ (not (gnus-method-denied-p method))
(gnus-check-backend-function
'retrieve-group-data-early (car method)))
(when (gnus-check-backend-function 'request-scan (car method))
(mm-decode-coding-string (gnus-status-message group) charset))))
(unless (gnus-request-group group t)
- (when (equal major-mode 'gnus-summary-mode)
- (gnus-kill-buffer (current-buffer)))
- (error "Couldn't request group %s: %s"
- (mm-decode-coding-string group charset)
- (mm-decode-coding-string (gnus-status-message group) charset)))
+ (when (equal major-mode 'gnus-summary-mode)
+ (gnus-kill-buffer (current-buffer)))
+ (error "Couldn't request group %s: %s"
+ (mm-decode-coding-string group charset)
+ (mm-decode-coding-string (gnus-status-message group) charset)))
(when gnus-agent
(gnus-agent-possibly-alter-active group (gnus-active group) info)
sequences))))
(defun nnimap-finish-retrieve-group-infos (server infos sequences)
- (when (nnimap-possibly-change-group nil server)
+ (when (and sequences
+ (nnimap-possibly-change-group nil server))
(with-current-buffer (nnimap-buffer)
;; Wait for the final data to trickle in.
(nnimap-wait-for-response (cadar sequences))
nil)
(defun nnimap-possibly-change-group (group server)
- (when (and server
- (not (nnimap-server-opened server)))
- (nnimap-open-server server))
- (if (not group)
- t
- (with-current-buffer (nnimap-buffer)
- (if (equal group (nnimap-group nnimap-object))
- t
- (let ((result (nnimap-command "SELECT %S" (utf7-encode group t))))
- (when (car result)
- (setf (nnimap-group nnimap-object) group)
- result))))))
+ (let ((open-result t))
+ (when (and server
+ (not (nnimap-server-opened server)))
+ (setq open-result (nnimap-open-server server)))
+ (cond
+ ((not open-result)
+ nil)
+ ((not group)
+ t)
+ (t
+ (with-current-buffer (nnimap-buffer)
+ (if (equal group (nnimap-group nnimap-object))
+ t
+ (let ((result (nnimap-command "SELECT %S" (utf7-encode group t))))
+ (when (car result)
+ (setf (nnimap-group nnimap-object) group)
+ result))))))))
(defun nnimap-find-connection (buffer)
"Find the connection delivering to BUFFER."