From: Lars Ingebrigtsen Date: Tue, 25 Dec 2012 12:00:26 +0000 (+0000) Subject: Merge changes made in Gnus master X-Git-Tag: emacs-24.3.90~173^2~7^2~498 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=45dd64808b72411218cf5fb7e80b0d879141f8c8;p=emacs.git Merge changes made in Gnus master nnimap.el (nnimap-authenticator): Expand to allow specifying the login methods. (nnimap-login): Respect the `nnimap-authenticator' variable. gnus-sum.el (gnus-summary-push-marks-to-backend): Push the complete mark state when moving articles. Otherwise unticked articles will get their ticks back after moving. gnus.texi (Customizing the IMAP Connection): Mention the other authenticators. --- diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 18db253a714..9b58992d2d9 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,8 @@ +2012-12-25 Lars Ingebrigtsen + + * gnus.texi (Customizing the IMAP Connection): Mention the other + authenticators. + 2012-12-24 Lars Ingebrigtsen * gnus.texi (Browse Foreign Server): Document diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index a41a2023a45..2cb3514dc60 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -14208,7 +14208,11 @@ what you need. @item nnimap-authenticator Some @acronym{IMAP} servers allow anonymous logins. In that case, -this should be set to @code{anonymous}. +this should be set to @code{anonymous}. If this variable isn't set, +the normal login methods will be used. If you wish to specify a +specific login method to be used, you can set this variable to either +@code{login} (the traditional @acronym{IMAP} login method), +@code{plain} or @code{cram-md5}. @item nnimap-expunge If non-@code{nil}, expunge articles after deleting them. This is always done diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 9f0e17924d4..a1a64cc80cb 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,13 @@ +2012-12-25 Lars Ingebrigtsen + + * nnimap.el (nnimap-authenticator): Expand to allow specifying the + login methods. + (nnimap-login): Respect the `nnimap-authenticator' variable. + + * gnus-sum.el (gnus-summary-push-marks-to-backend): Push the complete + mark state when moving articles. Otherwise unticked articles will get + their ticks back after moving. + 2012-12-24 Lars Ingebrigtsen * gnus-srvr.el (gnus-browse-delete-group): Fix syntax error. diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index d8cdd16dedb..7c3bf9f02a8 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -10127,17 +10127,20 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." (defun gnus-summary-push-marks-to-backend (article) (let ((set nil) + (del nil) (marks gnus-article-mark-lists)) (unless (memq article gnus-newsgroup-unreads) (push 'read set)) (while marks - (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)) + (if (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) + (push (cdar marks) del)) (pop marks)) - (gnus-request-set-mark gnus-newsgroup-name `(((,article) set ,set))))) + (gnus-request-set-mark gnus-newsgroup-name `(((,article) set ,set) + ((,article) del ,del))))) (defun gnus-summary-copy-article (&optional n to-newsgroup select-method) "Copy the current article to some other group. diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 5126c25f66b..bc0818efa7c 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -99,7 +99,8 @@ Uses the same syntax as `nnmail-split-methods'.") (defvoo nnimap-authenticator nil "How nnimap authenticate itself to the server. -Possible choices are nil (use default methods) or `anonymous'.") +Possible choices are nil (use default methods), `anonymous', +`login', `plain' and `cram-md5'.") (defvoo nnimap-expunge t "If non-nil, expunge articles after deleting them. @@ -487,9 +488,13 @@ textual parts.") ;; round trips than CRAM-MD5, and it's less likely to be buggy), ;; and we're using an encrypted connection. ((and (not (nnimap-capability "LOGINDISABLED")) - (eq (nnimap-stream-type nnimap-object) 'tls)) + (eq (nnimap-stream-type nnimap-object) 'tls) + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'login))) (nnimap-command "LOGIN %S %S" user password)) - ((nnimap-capability "AUTH=CRAM-MD5") + ((and (nnimap-capability "AUTH=CRAM-MD5") + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'cram-md5))) (erase-buffer) (let ((sequence (nnimap-send-command "AUTHENTICATE CRAM-MD5")) (challenge (nnimap-wait-for-line "^\\+\\(.*\\)\n"))) @@ -502,9 +507,13 @@ textual parts.") (base64-decode-string challenge)))) "\r\n")) (nnimap-wait-for-response sequence))) - ((not (nnimap-capability "LOGINDISABLED")) + ((and (not (nnimap-capability "LOGINDISABLED")) + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'login))) (nnimap-command "LOGIN %S %S" user password)) - ((nnimap-capability "AUTH=PLAIN") + ((and (nnimap-capability "AUTH=PLAIN") + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'plain))) (nnimap-command "AUTHENTICATE PLAIN %s" (base64-encode-string