Change the message to "available fonts".
[gnus] / lisp / nnimap.el
index 917f994..a93bfa9 100644 (file)
@@ -73,7 +73,7 @@
 
 (nnoo-declare nnimap)
 
-(defconst nnimap-version "nnimap 0.131")
+(defconst nnimap-version "nnimap 1.0")
 
 (defvoo nnimap-address nil
   "Address of physical IMAP server.  If nil, use the virtual server's name.")
@@ -129,10 +129,10 @@ the syntax of this variable have been extended along the lines of:
 
 (setq nnimap-split-rule
       '((\"my1server\"    (\".*\"    ((\"ding\"    \"ding@gnus.org\")
-                                  (\"junk\"    \"From:.*Simon\")))
-        (\"my2server\"    (\"INBOX\" nnimap-split-fancy))
-        (\"my[34]server\" (\".*\"    ((\"private\" \"To:.*Simon\")
-                                  (\"junk\"    my-junk-func)))))
+                                 (\"junk\"    \"From:.*Simon\")))
+       (\"my2server\"    (\"INBOX\" nnimap-split-fancy))
+       (\"my[34]server\" (\".*\"    ((\"private\" \"To:.*Simon\")
+                                 (\"junk\"    my-junk-func)))))
 
 The virtual server name is in fact a regexp, so that the same rules
 may apply to several servers.  In the example, the servers
@@ -237,7 +237,8 @@ There are two wildcards * and %. * matches everything, % matches
 everything in the current hierarchy.")
 
 (defvoo nnimap-news-groups nil
-  "IMAP support a news-like mode, also known as bulletin board mode, where replies is sent via IMAP instead of SMTP.
+  "IMAP support a news-like mode, also known as bulletin board mode,
+where replies is sent via IMAP instead of SMTP.
 
 This variable should contain a regexp matching groups where you wish
 replies to be stored to the mailbox directly.
@@ -252,6 +253,22 @@ news-like mailboxes.  If you wish to have a group with todo items or
 similar which you wouldn't want to set up a mailing list for, you can
 use this to make replies go directly to the group.")
 
+(defvoo nnimap-expunge-search-string "UID %s NOT SINCE %s"
+  "*IMAP search command to use for articles that are to be expired.
+The first %s is replaced by a UID set of articles to search on,
+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.")
+
+(defvoo nnimap-importantize-dormant t
+  "*If non-nil, mark \"dormant\" articles as \"ticked\" for other IMAP clients.
+Note that within Gnus, dormant articles will still (only) be
+marked as ticked.  This is to make \"dormant\" articles stand out,
+just like \"ticked\" articles, in other IMAP clients.")
+
 (defvoo nnimap-server-address nil
   "Obsolete.  Use `nnimap-address'.")
 
@@ -298,8 +315,8 @@ For example: (setq nnimap-debug \"*nnimap-debug*\")")
 (defvar nnimap-callback-buffer nil
   "Which buffer the asynchronous article prefetch callback should work in.")
 (defvar nnimap-server-buffer-alist nil)        ;; Map server name to buffers.
-(defvar nnimap-current-server nil)     ;; Current server
-(defvar nnimap-server-buffer nil)      ;; Current servers' buffer
+(defvar nnimap-current-server nil) ;; Current server
+(defvar nnimap-server-buffer nil) ;; Current servers' buffer
 
 \f
 
@@ -325,13 +342,13 @@ If SERVER is nil, uses the current server."
         (new-uidvalidity (imap-mailbox-get 'uidvalidity))
         (old-uidvalidity (gnus-group-get-parameter gnusgroup 'uidvalidity))
         (dir (file-name-as-directory (expand-file-name nnimap-directory)))
-         (nameuid (nnheader-translate-file-chars
-                   (concat nnimap-nov-file-name
-                           (if (equal server "")
-                               "unnamed"
-                             server) "." group "." old-uidvalidity
-                             nnimap-nov-file-name-suffix) t))
-         (file (if (or nnmail-use-long-file-names
+        (nameuid (nnheader-translate-file-chars
+                  (concat nnimap-nov-file-name
+                          (if (equal server "")
+                              "unnamed"
+                            server) "." group "." old-uidvalidity
+                          nnimap-nov-file-name-suffix) t))
+        (file (if (or nnmail-use-long-file-names
                       (file-exists-p (expand-file-name nameuid dir)))
                   (expand-file-name nameuid dir)
                 (expand-file-name
@@ -369,7 +386,7 @@ If EXAMINE is non-nil the group is selected read-only."
                                    maxuid (if maxuid (max maxuid uid) uid)))
                            'UID))
        (list (imap-mailbox-get 'exists) minuid maxuid)))))
-  
+
 (defun nnimap-possibly-change-group (group &optional server)
   "Make GROUP the current group, and SERVER the current server."
   (when (nnimap-possibly-change-server server)
@@ -380,12 +397,14 @@ If EXAMINE is non-nil the group is selected read-only."
            (if (or (nnimap-verify-uidvalidity
                     group (or server nnimap-current-server))
                    (zerop (imap-mailbox-get 'exists group))
+                   t ;; for OGnus to see if ignoring uidvalidity
+                   ;; changes has any bad effects.
                    (yes-or-no-p
                     (format
                      "nnimap: Group %s is not uidvalid.  Continue? " group)))
                imap-current-mailbox
              (imap-mailbox-unselect)
-             (error "nnimap: Group %s is not uid-valid." group))
+             (error "nnimap: Group %s is not uid-valid" group))
          (nnheader-report 'nnimap (imap-error-text)))))))
 
 (defun nnimap-replace-whitespace (string)
@@ -415,7 +434,7 @@ If EXAMINE is non-nil the group is selected read-only."
              mbx imap-current-mailbox
              headers (nnimap-demule
                       (if (imap-capability 'IMAP4rev1)
-                          ;; xxx don't just use car? alist doesn't contain
+                     ;; xxx don't just use car? alist doesn't contain
                           ;; anything else now, but it might...
                           (nth 2 (car (imap-message-get uid 'BODYDETAIL)))
                         (imap-message-get uid 'RFC822.HEADER)))
@@ -459,38 +478,38 @@ If EXAMINE is non-nil the group is selected read-only."
 (defun nnimap-group-overview-filename (group server)
   "Make pathname for GROUP on SERVER."
   (let* ((dir (file-name-as-directory (expand-file-name nnimap-directory)))
-         (uidvalidity (gnus-group-get-parameter
-                       (gnus-group-prefixed-name
-                        group (gnus-server-to-method
-                               (format "nnimap:%s" server)))
-                       'uidvalidity))
-         (name (nnheader-translate-file-chars
-                (concat nnimap-nov-file-name
-                        (if (equal server "")
-                            "unnamed"
-                          server) "." group nnimap-nov-file-name-suffix) t))
-         (nameuid (nnheader-translate-file-chars
-                   (concat nnimap-nov-file-name
-                           (if (equal server "")
-                               "unnamed"
-                             server) "." group "." uidvalidity
-                             nnimap-nov-file-name-suffix) t))
-         (oldfile (if (or nnmail-use-long-file-names
-                          (file-exists-p (expand-file-name name dir)))
-                      (expand-file-name name dir)
-                    (expand-file-name
-                     (mm-encode-coding-string
-                      (nnheader-replace-chars-in-string name ?. ?/)
-                      nnmail-pathname-coding-system)
-                     dir)))
-         (newfile (if (or nnmail-use-long-file-names
-                          (file-exists-p (expand-file-name nameuid dir)))
-                      (expand-file-name nameuid dir)
-                    (expand-file-name
-                     (mm-encode-coding-string
-                      (nnheader-replace-chars-in-string nameuid ?. ?/)
-                      nnmail-pathname-coding-system)
-                     dir))))
+        (uidvalidity (gnus-group-get-parameter
+                      (gnus-group-prefixed-name
+                       group (gnus-server-to-method
+                              (format "nnimap:%s" server)))
+                      'uidvalidity))
+        (name (nnheader-translate-file-chars
+               (concat nnimap-nov-file-name
+                       (if (equal server "")
+                           "unnamed"
+                         server) "." group nnimap-nov-file-name-suffix) t))
+        (nameuid (nnheader-translate-file-chars
+                  (concat nnimap-nov-file-name
+                          (if (equal server "")
+                              "unnamed"
+                            server) "." group "." uidvalidity
+                          nnimap-nov-file-name-suffix) t))
+        (oldfile (if (or nnmail-use-long-file-names
+                         (file-exists-p (expand-file-name name dir)))
+                     (expand-file-name name dir)
+                   (expand-file-name
+                    (mm-encode-coding-string
+                     (nnheader-replace-chars-in-string name ?. ?/)
+                     nnmail-pathname-coding-system)
+                    dir)))
+        (newfile (if (or nnmail-use-long-file-names
+                         (file-exists-p (expand-file-name nameuid dir)))
+                     (expand-file-name nameuid dir)
+                   (expand-file-name
+                    (mm-encode-coding-string
+                     (nnheader-replace-chars-in-string nameuid ?. ?/)
+                     nnmail-pathname-coding-system)
+                    dir))))
     (when (and (file-exists-p oldfile) (not (file-exists-p newfile)))
       (message "nnimap: Upgrading novcache filename...")
       (sit-for 1)
@@ -537,7 +556,7 @@ If EXAMINE is non-nil the group is selected read-only."
           (> nnimap-length nnmail-large-newsgroup)
           (nnheader-message 6 "nnimap: Retrieving headers...done")))))
 
-(defun nnimap-use-nov-p (group server)
+(defun nnimap-dont-use-nov-p (group server)
   (or gnus-nov-is-evil nnimap-nov-is-evil
       (unless (and (gnus-make-directory
                    (file-name-directory
@@ -551,7 +570,7 @@ If EXAMINE is non-nil the group is selected read-only."
   (when (nnimap-possibly-change-group group server)
     (with-current-buffer nntp-server-buffer
       (erase-buffer)
-      (if (nnimap-use-nov-p group server)
+      (if (nnimap-dont-use-nov-p group server)
          (nnimap-retrieve-headers-from-server
           (gnus-compress-sequence articles) group server)
        (let (uids cached low high)
@@ -571,11 +590,11 @@ If EXAMINE is non-nil the group is selected read-only."
                    (nnimap-retrieve-headers-from-server
                     (cons (1+ (cdr cached)) high) group server))
                  (when nnimap-prune-cache
-                   ;; remove nov's for articles which has expired on server
+             ;; remove nov's for articles which has expired on server
                    (goto-char (point-min))
                    (dolist (uid (gnus-set-difference articles uids))
-                      (when (re-search-forward (format "^%d\t" uid) nil t)
-                        (gnus-delete-line)))))
+                     (when (re-search-forward (format "^%d\t" uid) nil t)
+                       (gnus-delete-line)))))
              ;; nothing cached, fetch whole range from server
              (nnimap-retrieve-headers-from-server
               (cons low high) group server))
@@ -598,9 +617,9 @@ If EXAMINE is non-nil the group is selected read-only."
           (port (if nnimap-server-port
                     (int-to-string nnimap-server-port)
                   "imap"))
-          (alist (gnus-netrc-machine list (or nnimap-server-address 
-                                               nnimap-address server)
-                                      port "imap"))
+          (alist (gnus-netrc-machine list (or nnimap-server-address
+                                              nnimap-address server)
+                                     port "imap"))
           (user (gnus-netrc-get alist "login"))
           (passwd (gnus-netrc-get alist "password")))
 &nb