Synch with Oort Gnus.
[elisp/gnus.git-] / lisp / nnmail.el
index f2bf49d..cb70183 100644 (file)
@@ -1,5 +1,5 @@
 ;;; nnmail.el --- mail support functions for the Gnus mail backends
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -153,7 +153,7 @@ number of days) -- this doesn't have to be an integer.  This variable
 can also be `immediate' and `never'."
   :group 'nnmail-expire
   :type '(choice (const immediate)
-                (integer :tag "days")
+                (number :tag "days")
                 (const never)))
 
 (defcustom nnmail-expiry-wait-function nil
@@ -325,7 +325,7 @@ the following:
 GROUP: Mail will be stored in GROUP (a string).
 
 \(FIELD VALUE [- RESTRICT [- RESTRICT [...]]] SPLIT): If the message
-  field FIELD (a regexp) contains VALUE (a regexp), store the messages 
+  field FIELD (a regexp) contains VALUE (a regexp), store the messages
   as specified by SPLIT.  If RESTRICT (a regexp) matches some string
   after FIELD and before the end of the matched VALUE, return NIL,
   otherwise process SPLIT.  Multiple RESTRICTs add up, further
@@ -373,12 +373,12 @@ Example:
             (any \"procmail@informatik\\\\.rwth-aachen\\\\.de\" \"procmail.list\")
             (any \"SmartList@informatik\\\\.rwth-aachen\\\\.de\" \"SmartList.list\")
              ;; Both lists below have the same suffix, so prevent
-             ;; cross-posting to mkpkg.list of messages posted only to 
+             ;; cross-posting to mkpkg.list of messages posted only to
              ;; the bugs- list, but allow cross-posting when the
              ;; message was really cross-posted.
              (any \"bugs-mypackage@somewhere\" \"mypkg.bugs\")
              (any \"mypackage@somewhere\" - \"bugs-mypackage\" \"mypkg.list\")
-             ;; 
+             ;;
             ;; People...
             (any \"larsi@ifi\\\\.uio\\\\.no\" \"people.Lars Magne Ingebrigtsen\"))
          ;; Unmatched mail goes to the catch all group.
@@ -1102,14 +1102,20 @@ Return the number of characters in the body."
 
 (defun nnmail-remove-list-identifiers ()
   "Remove list identifiers from Subject headers."
-  (let ((regexp (if (stringp nnmail-list-identifiers) nnmail-list-identifiers
-                 (mapconcat 'identity nnmail-list-identifiers " *\\|"))))
+  (let ((regexp 
+        (if (consp nnmail-list-identifiers) 
+            (mapconcat 'identity nnmail-list-identifiers " *\\|")
+          nnmail-list-identifiers)))
     (when regexp
       (goto-char (point-min))
-      (when (re-search-forward
-            (concat "^Subject: +\\(Re: +\\)?\\(" regexp " *\\)")
-            nil t)
-       (delete-region (match-beginning 2) (match-end 0))))))
+      (while (re-search-forward
+              (concat "^Subject: +\\(R[Ee]: +\\)*\\(" regexp " *\\)")
+              nil t)
+        (delete-region (match-beginning 2) (match-end 0))
+        (beginning-of-line))
+      (when (re-search-forward "^Subject: +\\(\\(R[Ee]: +\\)+\\)R[Ee]: +" nil t)
+        (delete-region (match-beginning 1) (match-end 1))
+       (beginning-of-line)))))
 
 (defun nnmail-remove-tabs ()
   "Translate TAB characters into SPACE characters."
@@ -1583,7 +1589,9 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
                        (nnmail-split-incoming
                         file ',(intern (format "%s-save-mail" method))
                         ',spool-func
-                        (nnmail-get-split-group orig-file source)
+                        (if (equal file orig-file)
+                            nil
+                          (nnmail-get-split-group orig-file ',source))
                         ',(intern (format "%s-active-number" method))))))
          (incf total new)
          (incf i)))