Synch to No Gnus 200409231508.
[elisp/gnus.git-] / lisp / gnus.el
index 9cde129..45d7945 100644 (file)
@@ -75,7 +75,7 @@
 ;; These belong to gnus-group.el.
 (defgroup gnus-group nil
   "Group buffers."
-  :link '(custom-manual "(gnus)The Group Buffer")
+  :link '(custom-manual "(gnus)Group Buffer")
   :group 'gnus)
 
 (defgroup gnus-group-foreign nil
 ;; These belong to gnus-sum.el.
 (defgroup gnus-summary nil
   "Summary buffers."
-  :link '(custom-manual "(gnus)The Summary Buffer")
+  :link '(custom-manual "(gnus)Summary Buffer")
   :group 'gnus)
 
 (defgroup gnus-summary-exit nil
 
 (defgroup gnus-summary-sort nil
   "Sorting the summary buffer."
-  :link '(custom-manual "(gnus)Sorting")
+  :link '(custom-manual "(gnus)Sorting the Summary Buffer")
   :group 'gnus-summary)
 
 (defgroup gnus-summary-visual nil
@@ -312,7 +312,6 @@ be set in `.emacs' instead."
   (defalias 'gnus-overlay-end 'overlay-end)
   (defalias 'gnus-extent-detached-p 'ignore)
   (defalias 'gnus-extent-start-open 'ignore)
-  (defalias 'gnus-appt-select-lowest-window 'appt-select-lowest-window)
   (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
   (defalias 'gnus-character-to-event 'identity)
   (defalias 'gnus-assq-delete-all 'assq-delete-all)
@@ -987,6 +986,7 @@ For example:
      (\"mail\\\\.me\" (gnus-use-scoring  t))
      (\"list\\\\..*\" (total-expire . t)
                  (broken-reply-to . t)))"
+  :version "21.4"
   :group 'gnus-group-various
   :type '(repeat (cons regexp
                       (repeat sexp))))
@@ -1137,9 +1137,8 @@ Check the NNTPSERVER environment variable and the
       (and (file-readable-p gnus-nntpserver-file)
           (with-temp-buffer
             (insert-file-contents gnus-nntpserver-file)
-            (let ((name (buffer-string)))
-              (unless (string-match "\\`[ \t\n]*$" name)
-                name))))))
+            (when (re-search-forward "[^ \t\n\r]+" nil t)
+              (match-string 0))))))
 
 (defcustom gnus-select-method
   (condition-case nil
@@ -1629,6 +1628,7 @@ to be desirable; see the manual for further details."
  "Return GROUP's to-address."
  :variable-document
  "*Alist of group regexps and correspondent to-addresses."
+ :variable-group gnus-group-parameter
  :parameter-type '(gnus-email-address :tag "To Address")
  :parameter-document "\
 This will be used when doing followups and posts.
@@ -1655,6 +1655,7 @@ address was listed in gnus-group-split Addresses (see below).")
  "Return GROUP's to-list."
  :variable-document
  "*Alist of group regexps and correspondent to-lists."
+ :variable-group gnus-group-parameter
  :parameter-type '(gnus-email-address :tag "To List")
  :parameter-document "\
 This address will be used when doing a `a' in the group.
@@ -1673,6 +1674,7 @@ address was listed in gnus-group-split Addresses (see below).")
  "Return GROUP's subscription status."
  :variable-document
  "*Groups which are automatically considered subscribed."
+ :variable-group gnus-group-parameter
  :parameter-type '(const :tag "Subscribed" t)
  :parameter-document "\
 Gnus assumed that you are subscribed to the To/List address.
@@ -1779,6 +1781,7 @@ posting an article."
  "Return GROUP's initial input of the number of articles."
  :variable-document
  "*Alist of group regexps and its initial input of the number of articles."
+ :variable-group gnus-group-parameter
  :parameter-type '(choice :tag "Initial Input for Large Newsgroup"
                          (const :tag "All" nil)
                          (integer))
@@ -1863,6 +1866,42 @@ This only makes sense for mail groups."
    "The spam classification (spam, ham, or neither) of this group.
 When a spam group is entered, all unread articles are marked as spam.")
 
+  (gnus-define-group-parameter
+   spam-resend-to
+   :type list
+   :function-document
+   "The address to get spam resent (through spam-report-resend)."
+   :variable gnus-spam-resend-to
+   :variable-default nil
+   :variable-document
+   "The address to get spam resent (through spam-report-resend)."
+   :variable-group spam
+   :variable-type '(repeat
+                   (list :tag "Group address for resending spam"
+                         (regexp :tag "Group")
+                         (string :tag "E-mail address for resending spam (requires the spam-use-resend exit processor)")))
+   :parameter-type 'string :tag "E-mail address for resending spam (requires the spam-use-resend exit processor)"
+   :parameter-document
+   "The address to get spam resent (through spam-report-resend).")
+
+  (gnus-define-group-parameter
+   ham-resend-to
+   :type list
+   :function-document
+   "The address to get ham resent (through spam-report-resend)."
+   :variable gnus-ham-resend-to
+   :variable-default nil
+   :variable-document
+   "The address to get ham resent (through spam-report-resend)."
+   :variable-group spam
+   :variable-type '(repeat
+                   (list :tag "Group address for resending ham"
+                         (regexp :tag "Group")
+                         (string :tag "E-mail address for resending ham (requires the spam-use-resend exit processor)")))
+   :parameter-type 'string :tag "E-mail address for resending ham (requires the spam-use-resend exit processor)"
+   :parameter-document
+   "The address to get ham resent (through spam-report-resend).")
+
   (defvar gnus-group-spam-exit-processor-ifile "ifile"
     "OBSOLETE: The ifile summary exit spam processor.")
 
@@ -1919,6 +1958,27 @@ Only applicable to non-spam (unclassified and ham) groups.")
      :value nil
      (list :tag "Spam Summary Exit Processor Choices"
           (set
+           (const :tag "Spam: Bogofilter"    (spam spam-use-bogofilter))
+           (const :tag "Spam: Blacklist"     (spam spam-use-blacklist))
+           (const :tag "Spam: Bsfilter"      (spam spam-use-bsfilter))
+           (const :tag "Spam: Gmane Report"  (spam spam-use-gmane))
+           (const :tag "Spam: Resend Message"(spam spam-use-resend))
+           (const :tag "Spam: ifile"         (spam spam-use-ifile))
+           (const :tag "Spam: Spam Oracle"   (spam spam-use-spamoracle))
+           (const :tag "Spam: Spam-stat"     (spam spam-use-stat))
+           (const :tag "Spam: SpamAssassin"  (spam spam-use-spamassassin))
+           (const :tag "Spam: CRM114"        (spam spam-use-crm114))
+           (const :tag "Ham: BBDB"           (ham spam-use-BBDB))
+           (const :tag "Ham: Bogofilter"     (ham spam-use-bogofilter))
+           (const :tag "Ham: Bsfilter"       (ham spam-use-bsfilter))
+           (const :tag "Ham: Copy"           (ham spam-use-ham-copy))
+           (const :tag "Ham: Resend Message" (ham spam-use-resend))
+           (const :tag "Ham: ifile"          (ham spam-use-ifile))
+           (const :tag "Ham: Spam Oracle"    (ham spam-use-spamoracle))
+           (const :tag "Ham: Spam-stat"      (ham spam-use-stat))
+           (const :tag "Ham: SpamAssassin"   (ham spam-use-spamassassin))
+           (const :tag "Ham: CRM114"         (ham spam-use-crm114))
+           (const :tag "Ham: Whitelist"      (ham spam-use-whitelist))
            (variable-item gnus-group-spam-exit-processor-ifile)
            (variable-item gnus-group-spam-exit-processor-stat)
            (variable-item gnus-group-spam-exit-processor-bogofilter)
@@ -1931,22 +1991,7 @@ Only applicable to non-spam (unclassified and ham) groups.")
            (variable-item gnus-group-ham-exit-processor-whitelist)
            (variable-item gnus-group-ham-exit-processor-BBDB)
            (variable-item gnus-group-ham-exit-processor-spamoracle)
-           (variable-item gnus-group-ham-exit-processor-copy)
-           (const :tag "Spam: Gmane Report"  (spam spam-use-gmane))
-           (const :tag "Spam: Bogofilter"    (spam spam-use-bogofilter))
-           (const :tag "Spam: Blacklist"     (spam spam-use-blacklist))
-           (const :tag "Spam: ifile"         (spam spam-use-ifile))
-           (const :tag "Spam: Spam-stat"     (spam spam-use-stat))
-           (const :tag "Spam: Spam Oracle"   (spam spam-use-spamoracle))
-           (const :tag "Spam: SpamAssassin"  (spam spam-use-spamassassin))
-           (const :tag "Ham: SpamAssassin"   (ham spam-use-spamassassin))
-           (const :tag "Ham: ifile"          (ham spam-use-ifile))
-           (const :tag "Ham: Bogofilter"     (ham spam-use-bogofilter))
-           (const :tag "Ham: Spam-stat"      (ham spam-use-stat))
-           (const :tag "Ham: Whitelist"      (ham spam-use-whitelist))
-           (const :tag "Ham: BBDB"           (ham spam-use-BBDB))
-           (const :tag "Ham: Copy"           (ham spam-use-ham-copy))
-           (const :tag "Ham: Spam Oracle"    (ham spam-use-spamoracle)))))
+           (variable-item gnus-group-ham-exit-processor-copy))))
    :function-document
    "Which spam or ham processors will be applied when the summary is exited."
    :variable gnus-spam-process-newsgroups
@@ -1963,6 +2008,27 @@ spam processing, associated with the appropriate processor."
                  (regexp :tag "Group Regexp")
                  (set 
                   :tag "Spam/Ham Summary Exit Processor"
+                  (const :tag "Spam: Bogofilter"    (spam spam-use-bogofilter))
+                  (const :tag "Spam: Blacklist"     (spam spam-use-blacklist))
+                  (const :tag "Spam: Bsfilter"      (spam spam-use-bsfilter))
+                  (const :tag "Spam: Gmane Report"  (spam spam-use-gmane))
+                  (const :tag "Spam: Resend Message"(spam spam-use-resend))
+                  (const :tag "Spam: ifile"         (spam spam-use-ifile))
+                  (const :tag "Spam: Spam-stat"     (spam spam-use-stat))
+                  (const :tag "Spam: Spam Oracle"   (spam spam-use-spamoracle))
+                  (const :tag "Spam: SpamAssassin"  (spam spam-use-spamassassin))
+                  (const :tag "Spam: CRM114"        (spam spam-use-crm114))
+                  (const :tag "Ham: BBDB"           (ham spam-use-BBDB))
+                  (const :tag "Ham: Bogofilter"     (ham spam-use-bogofilter))
+                  (const :tag "Ham: Bsfilter"       (ham spam-use-bsfilter))
+                  (const :tag "Ham: Copy"           (ham spam-use-ham-copy))
+                  (const :tag "Ham: Resend Message" (ham spam-use-resend))
+                  (const :tag "Ham: ifile"          (ham spam-use-ifile))
+                  (const :tag "Ham: Spam-stat"      (ham spam-use-stat))
+                  (const :tag "Ham: Spam Oracle"    (ham spam-use-spamoracle))
+                  (const :tag "Ham: SpamAssassin"   (ham spam-use-spamassassin))
+                  (const :tag "Ham: CRM114"         (ham spam-use-crm114))
+                  (const :tag "Ham: Whitelist"      (ham spam-use-whitelist))
                   (variable-item gnus-group-spam-exit-processor-ifile)
                   (variable-item gnus-group-spam-exit-processor-stat)
                   (variable-item gnus-group-spam-exit-processor-bogofilter)
@@ -1975,22 +2041,7 @@ spam processing, associated with the appropriate processor."
                   (variable-item gnus-group-ham-exit-processor-whitelist)
                   (variable-item gnus-group-ham-exit-processor-BBDB)
                   (variable-item gnus-group-ham-exit-processor-spamoracle)
-                  (variable-item gnus-group-ham-exit-processor-copy)
-                  (const :tag "Spam: Gmane Report"  (spam spam-use-gmane))
-                  (const :tag "Spam: Bogofilter"    (spam spam-use-bogofilter))
-                  (const :tag "Spam: Blacklist"     (spam spam-use-blacklist))
-                  (const :tag "Spam: ifile"         (spam spam-use-ifile))
-                  (const :tag "Spam: Spam-stat"     (spam spam-use-stat))
-                  (const :tag "Spam: Spam Oracle"   (spam spam-use-spamoracle))
-                  (const :tag "Spam: SpamAssassin"  (spam spam-use-spamassassin))
-                  (const :tag "Ham: SpamAssassin"   (ham spam-use-spamassassin))
-                  (const :tag "Ham: ifile"          (ham spam-use-ifile))
-                  (const :tag "Ham: Bogofilter"     (ham spam-use-bogofilter))
-                  (const :tag "Ham: Spam-stat"      (ham spam-use-stat))
-                  (const :tag "Ham: Whitelist"      (ham spam-use-whitelist))
-                  (const :tag "Ham: BBDB"           (ham spam-use-BBDB))
-                  (const :tag "Ham: Copy"           (ham spam-use-ham-copy))
-                  (const :tag "Ham: Spam Oracle"    (ham spam-use-spamoracle)))))
+                  (variable-item gnus-group-ham-exit-processor-copy))))
 
    :parameter-document
    "Which spam or ham processors will be applied when the summary is exited.")
@@ -2029,14 +2080,18 @@ spam-autodetect-recheck-messages is set.")
      (const default)
      (set :tag "Use specific methods"
          (variable-item spam-use-blacklist)
+         (variable-item spam-use-gmane-xref)
          (variable-item spam-use-regex-headers)
          (variable-item spam-use-regex-body)
          (variable-item spam-use-whitelist)
          (variable-item spam-use-BBDB)
          (variable-item spam-use-ifile)
          (variable-item spam-use-spamoracle)
+         (variable-item spam-use-crm114)
          (variable-item spam-use-spamassassin)
          (variable-item spam-use-spamassassin-headers)
+         (variable-item spam-use-bsfilter)
+         (variable-item spam-use-bsfilter-headers)
          (variable-item spam-use-stat)
          (variable-item spam-use-blackholes)
          (variable-item spam-use-hashcash)
@@ -2062,17 +2117,21 @@ set."
        (const default)
        (set :tag "Use specific methods"
        (variable-item spam-use-blacklist)
+       (variable-item spam-use-gmane-xref)
        (variable-item spam-use-regex-headers)
        (variable-item spam-use-regex-body)
        (variable-item spam-use-whitelist)
        (variable-item spam-use-BBDB)
        (variable-item spam-use-ifile)
        (variable-item spam-use-spamoracle)
+       (variable-item spam-use-crm114)
        (variable-item spam-use-stat)
        (variable-item spam-use-blackholes)
        (variable-item spam-use-hashcash)
        (variable-item spam-use-spamassassin)
        (variable-item spam-use-spamassassin-headers)
+       (variable-item spam-use-bsfilter)
+       (variable-item spam-use-bsfilter-headers)
        (variable-item spam-use-bogofilter-headers)
        (variable-item spam-use-bogofilter)))))
      :parameter-document
@@ -2323,7 +2382,7 @@ face."
 When set, Gnus will prefer using the locally stored content rather
 than re-fetching it from the server.  You also need to enable
 `gnus-agent' for this to have any affect."
-  :version "21.3"
+  :version "21.4"
   :group 'gnus-agent
   :type 'boolean)
 
@@ -2342,7 +2401,7 @@ covered by that variable."
 You may customize gnus-agent to disable its use.  However, some
 back ends have started to use the agent as a client-side cache.
 Disabling the agent may result in noticeable loss of performance."
-  :version "21.3"
+  :version "21.4"
   :group 'gnus-agent
   :type 'boolean)
 
@@ -2375,6 +2434,7 @@ It can be one of the symbols `gnus' \(show only Gnus version\), `emacs-gnus'
 `emacs-gnus' plus system type\), `gnus-mime-edit' \(show Gnus version and
 MIME Edit User-Agent\) or a custom string.  If you set it to a string,
 be sure to use a valid format, see RFC 2616."
+  :version "21.4"
   :group 'gnus-message
   :type '(choice
          (item :tag "Show Gnus version and MIME Edit User-Agent"
@@ -2483,7 +2543,6 @@ such as a mark that says whether an article is stored in the cache
 (defvar gnus-headers-retrieved-by nil)
 (defvar gnus-article-reply nil)
 (defvar gnus-override-method nil)
-(defvar gnus-article-check-size nil)
 (defvar gnus-opened-servers nil)
 
 (defvar gnus-current-kill-article nil)
@@ -2719,7 +2778,7 @@ gnus-registry.el will populate this if it's loaded.")
       gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view
       gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view
       gnus-uu-decode-binhex-view gnus-uu-unmark-thread
-      gnus-uu-mark-over gnus-uu-post-news)
+      gnus-uu-mark-over gnus-uu-post-news gnus-uu-invert-processable)
      ("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh
       gnus-uu-unmark-thread)
      ("gnus-msg" (gnus-summary-send-map keymap)
@@ -2821,7 +2880,6 @@ gnus-registry.el will populate this if it's loaded.")
 
 (eval-and-compile
   (unless (featurep 'xemacs)
-    (autoload 'x-face-decode-message-header "x-face-e21")
     (autoload 'x-face-mule-gnus-article-display-x-face "x-face-mule")))
 
 (unless (and (fboundp 'base64-encode-string)
@@ -2881,7 +2939,6 @@ with some simple extensions.
 %z   Article zcore (character)
 %t   Number of articles under the current thread (number).
 %e   Whether the thread is empty or not (character).
-%l   GroupLens score (string).
 %V   Total thread score (number).
 %P   The line number (number).
 %O   Download mark (character).
@@ -3336,6 +3393,38 @@ that that variable is buffer-local to the summary buffers."
                                   (nth 1 method))))
       method)))
 
+(defsubst gnus-method-to-server (method)
+  (catch 'server-name
+    (setq method (or method gnus-select-method))
+
+    ;; Perhaps it is already in the cache.
+    (mapc (lambda (name-method)
+            (if (equal (cdr name-method) method)
+                (throw 'server-name (car name-method))))
+          gnus-server-method-cache)
+
+    (mapc
+     (lambda (server-alist)
+       (mapc (lambda (name-method)
+               (when (gnus-methods-equal-p (cdr name-method) method)
+                 (unless (member name-method gnus-server-method-cache)
+                   (push name-method gnus-server-method-cache))
+                 (throw 'server-name (car name-method))))
+             server-alist))
+     (let ((alists (list gnus-server-alist
+                         gnus-predefined-server-alist)))
+       (if gnus-select-method
+           (push (list (cons "native" gnus-select-method)) alists))
+       alists))
+
+    (let* ((name (if (member (cadr method) '(nil ""))
+                     (format "%s" (car method))
+                   (format "%s:%s" (car method) (cadr method))))
+           (name-method (cons name method)))
+      (unless (member name-method gnus-server-method-cache)
+        (push name-method gnus-server-method-cache))
+      name)))
+
 (defsubst gnus-server-to-method (server)
   "Map virtual server names to select methods."
   (or (and server (listp server) server)
@@ -3383,38 +3472,6 @@ that that variable is buffer-local to the summary buffers."
           (push (cons server result) gnus-server-method-cache))
        result)))
 
-(defsubst gnus-method-to-server (method)
-  (catch 'server-name
-    (setq method (or method gnus-select-method))
-
-    ;; Perhaps it is already in the cache.
-    (mapc (lambda (name-method)
-            (if (equal (cdr name-method) method)
-                (throw 'server-name (car name-method))))
-          gnus-server-method-cache)
-
-    (mapc
-     (lambda (server-alist)
-       (mapc (lambda (name-method)
-               (when (gnus-methods-equal-p (cdr name-method) method)
-                 (unless (member name-method gnus-server-method-cache)
-                   (push name-method gnus-server-method-cache))
-                 (throw 'server-name (car name-method))))
-             server-alist))
-     (let ((alists (list gnus-server-alist
-                         gnus-predefined-server-alist)))
-       (if gnus-select-method
-           (push (list (cons "native" gnus-select-method)) alists))
-       alists))
-
-    (let* ((name (if (member (cadr method) '(nil ""))
-                     (format "%s" (car method))
-                   (format "%s:%s" (car method) (cadr method))))
-           (name-method (cons name method)))
-      (unless (member name-method gnus-server-method-cache)
-        (push name-method gnus-server-method-cache))
-      name)))
-
 (defsubst gnus-server-get-method (group method)
   ;; Input either a server name, and extended server name, or a
   ;; select method, and return a select method.