* gnus-art.el (gnus-header-from, gnus-header-subject, gnus-header-name)
[gnus] / lisp / nnimap.el
index d84daf6..06adfde 100644 (file)
@@ -1,7 +1,7 @@
 ;;; nnimap.el --- imap backend for Gnus
 
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006 Free Software Foundation, Inc.
+;;   2005, 2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Simon Josefsson <jas@pdc.kth.se>
 ;;         Jim Radford <radford@robby.caltech.edu>
@@ -250,7 +250,7 @@ it O(n).  If p is small, then the default is probably faster."
   :type 'boolean
   :group 'nnimap)
 
-(defvoo nnimap-need-unselect-to-notice-new-mail nil
+(defvoo nnimap-need-unselect-to-notice-new-mail t
   "Unselect mailboxes before looking for new mail in them.
 Some servers seem to need this under some circumstances.")
 
@@ -375,7 +375,10 @@ and the second %s is replaced by a date criterium.
 One useful (and perhaps the only useful) value to change this to would
 be `UID %s NOT SENTSINCE %s' to make nnimap use the Date: header
 instead of the internal date of messages.  See section 6.4.4 of RFC
-2060 for more information on valid strings.")
+2060 for more information on valid strings.
+
+However, if `nnimap-search-uids-not-since-is-evil' is true, this
+variable has no effect since the search logic is reversed.")
 
 (defvoo nnimap-importantize-dormant t
   "If non-nil, mark \"dormant\" articles as \"ticked\" for other IMAP clients.
@@ -785,7 +788,7 @@ If EXAMINE is non-nil the group is selected read-only."
           (port (if nnimap-server-port
                     (int-to-string nnimap-server-port)
                   "imap"))
-          (user (netrc-machine-user-or-password 
+          (user (netrc-machine-user-or-password
                  "login"
                  list
                  (list server
@@ -793,7 +796,7 @@ If EXAMINE is non-nil the group is selected read-only."
                            nnimap-address))
                  (list port)
                  (list "imap" "imaps")))
-          (passwd (netrc-machine-user-or-password 
+          (passwd (netrc-machine-user-or-password
                    "password"
                    list
                    (list server
@@ -804,7 +807,7 @@ If EXAMINE is non-nil the group is selected read-only."
       (if (imap-authenticate user passwd nnimap-server-buffer)
          (prog2
              (setq nnimap-server-buffer-alist
-                   (nnimap-remove-server-from-buffer-alist 
+                   (nnimap-remove-server-from-buffer-alist
                     server
                     nnimap-server-buffer-alist))
              (push (list server nnimap-server-buffer)
@@ -863,7 +866,7 @@ Return nil if the server couldn't be closed for some reason."
       (setq nnimap-server-buffer nil
            nnimap-current-server nil
            nnimap-server-buffer-alist
-           (nnimap-remove-server-from-buffer-alist 
+           (nnimap-remove-server-from-buffer-alist
             server
             nnimap-server-buffer-alist)))
     (nnoo-close-server 'nnimap server)))
@@ -1183,18 +1186,12 @@ function is generally only called when Gnus is shutting down."
          (let (seen unseen)
            ;; read info could contain articles marked unread by other
            ;; imap clients!  we correct this
-           (setq seen (gnus-uncompress-range (gnus-info-read info))
-                 unseen (imap-search "UNSEEN UNDELETED")
-                 seen (gnus-set-difference seen unseen)
-                 ;; seen might lack articles marked as read by other
-                 ;; imap clients! we correct this
-                 seen (append seen (imap-search "SEEN"))
-                 ;; remove dupes
-                 seen (sort seen '<)
-                 seen (gnus-compress-sequence seen t)
-                 ;; we can't return '(1) since this isn't a "list of ranges",
-                 ;; and we can't return '((1)) since g-list-of-unread-articles
-                 ;; is buggy so we return '((1 . 1)).
+           (setq unseen (gnus-compress-sequence
+                         (imap-search "UNSEEN UNDELETED"))
+                 seen (gnus-range-difference (gnus-info-read info) unseen)
+                 seen (gnus-range-add seen
+                                      (gnus-compress-sequence
+                                       (imap-search "SEEN")))
                  seen (if (and (integerp (car seen))
                                (null (cdr seen)))
                           (list (cons (car seen) (car seen)))
@@ -1531,7 +1528,7 @@ function is generally only called when Gnus is shutting down."
   ;; return articles not deleted
   articles)
 
-(deffoo nnimap-request-move-article (article group server accept-form 
+(deffoo nnimap-request-move-article (article group server accept-form
                                             &optional last move-is-internal)
   (when (nnimap-possibly-change-server server)
     (save-excursion