Merge changes made in Gnus master
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 25 Dec 2012 12:00:26 +0000 (12:00 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 25 Dec 2012 12:00:26 +0000 (12:00 +0000)
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.

doc/misc/ChangeLog
doc/misc/gnus.texi
lisp/gnus/ChangeLog
lisp/gnus/gnus-sum.el
lisp/gnus/nnimap.el

index 18db253..9b58992 100644 (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
index a41a202..2cb3514 100644 (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
index 9f0e179..a1a64cc 100644 (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.
index d8cdd16..7c3bf9f 100644 (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.
index 5126c25..bc0818e 100644 (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