;;; mail-source.el --- functions for fetching mail
;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007 Free Software Foundation, Inc.
+;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news, mail
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;;; Code:
+;; For Emacs < 22.2.
+(eval-and-compile
+ (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+
+(require 'format-spec)
(eval-when-compile
(require 'cl)
- (require 'imap)
- (eval-when-compile (defvar display-time-mail-function)))
+ (require 'imap))
(eval-and-compile
(autoload 'pop3-movemail "pop3")
(autoload 'pop3-get-message-count "pop3")
(autoload 'nnheader-cancel-timer "nnheader"))
-(require 'format-spec)
(require 'mm-util)
(require 'message) ;; for `message-directory'
+(defvar display-time-mail-function)
+
+
(defgroup mail-source nil
"The mail-fetching library."
:version "21.1"
(list 'const (car a)))
imap-stream-alist)))
-(defcustom mail-sources nil
- "*Where the mail backends will look for incoming mail.
+(defcustom mail-sources '((file))
+ "Where the mail backends will look for incoming mail.
This variable is a list of mail source specifiers.
See Info node `(gnus)Mail Source Specifiers'."
:group 'mail-source
+ :version "23.1" ;; No Gnus
:link '(custom-manual "(gnus)Mail Source Specifiers")
:type `(choice
- (const nil)
- (repeat
+ (const :tag "None" nil)
+ (repeat :tag "List"
(choice :format "%[Value Menu%] %v"
:value (file)
+ (cons :tag "Group parameter `mail-source'"
+ (const :format "" group))
(cons :tag "Spool file"
(const :format "" file)
(checklist :tag "Options" :greedy t
:group 'mail-source
:type 'integer)
-(defcustom mail-source-delete-incoming nil
- "*If non-nil, delete incoming files after handling.
+(defcustom mail-source-delete-incoming
+ 10 ;; development versions
+ ;; 2 ;; released versions
+ "If non-nil, delete incoming files after handling.
If t, delete immediately, if nil, never delete. If a positive number, delete
-files older than number of days."
- ;; Note: The removing happens in `mail-source-callback', i.e. no old
- ;; incoming files will be deleted, unless you receive new mail.
- ;;
- ;; You may also set this to `nil' and call `mail-source-delete-old-incoming'
- ;; from a hook or interactively.
+files older than number of days.
+
+Removing of old files happens in `mail-source-callback', i.e. no
+old incoming files will be deleted unless you receive new mail.
+You may also set this variable to nil and call
+`mail-source-delete-old-incoming' interactively."
:group 'mail-source
+ :version "22.2" ;; No Gnus / Gnus 5.10.10 (default changed)
:type '(choice (const :tag "immediately" t)
(const :tag "never" nil)
(integer :tag "days")))
-(defcustom mail-source-delete-old-incoming-confirm t
- "*If non-nil, ask for for confirmation before deleting old incoming files.
+(defcustom mail-source-delete-old-incoming-confirm nil
+ "If non-nil, ask for confirmation before deleting old incoming files.
This variable only applies when `mail-source-delete-incoming' is a positive
number."
- :version "22.1"
+ :version "22.2" ;; No Gnus / Gnus 5.10.10 (default changed)
:group 'mail-source
:type 'boolean)
(fileday (+ fileday (* low2days (nth 1 filetime)))))
(setq files (cdr files))
(when (and (> (- currday fileday) diff)
- (gnus-message 8 "File `%s' is older than %s day(s)"
- bfile diff)
- (or (not confirm)
- (y-or-n-p (concat "Remove file `" bfile "'? "))))
+ (if confirm
+ (y-or-n-p
+ (format "\
+Delete old (> %s day(s)) incoming mail file `%s'? " diff bfile))
+ (gnus-message 8 "\
+Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
+ t))
(delete-file ffile))))))
(defun mail-source-callback (callback info)
(autoload 'imap-range-to-message-set "imap")
(autoload 'nnheader-ms-strip-cr "nnheader"))
+(autoload 'gnus-compress-sequence "gnus-range")
+
(defvar mail-source-imap-file-coding-system 'binary
"Coding system for the crashbox made by `mail-source-fetch-imap'.")
+;; Autoloads will bring in imap before this is called.
+(declare-function imap-capability "imap" (&optional identifier buffer))
+
(defun mail-source-fetch-imap (source callback)
"Fetcher for imap sources."
(mail-source-bind (imap source)