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.
This commit is contained in:
Lars Ingebrigtsen 2012-12-25 12:00:26 +00:00 committed by Katsumi Yamaoka
parent 9a0d4f34c6
commit 45dd64808b
5 changed files with 43 additions and 12 deletions

View file

@ -1,3 +1,8 @@
2012-12-25 Lars Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Customizing the IMAP Connection): Mention the other
authenticators.
2012-12-24 Lars Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Browse Foreign Server): Document

View file

@ -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

View file

@ -1,3 +1,13 @@
2012-12-25 Lars Ingebrigtsen <larsi@gnus.org>
* 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 <larsi@gnus.org>
* gnus-srvr.el (gnus-browse-delete-group): Fix syntax error.

View file

@ -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.

View file

@ -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