* gnus.el: Don't test for `mm-guess-mime-charset'.
[gnus] / lisp / gnus.el
index eb3fc76..e9b95d8 100644 (file)
 (require 'mm-util)
 (require 'nnheader)
 
-;; Make sure it was the right mm-util.
-(unless (fboundp 'mm-guess-mime-charset)
-  (error "Wrong `mm-util' found in `load-path'.  Make sure the Gnus one is found first."))
-
 (defgroup gnus nil
   "The coffee-brewing, all singing, all dancing, kitchen sink newsreader."
   :group 'news
@@ -286,10 +282,10 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "0.16"
+(defconst gnus-version-number "5.10.2"
   "Version number for this version of Gnus.")
 
-(defconst gnus-version (format "Oort Gnus v%s" gnus-version-number)
+(defconst gnus-version (format "Gnus v%s" gnus-version-number)
   "Version string for this version of Gnus.")
 
 (defcustom gnus-inhibit-startup-message nil
@@ -1810,20 +1806,20 @@ This only makes sense for mail groups."
 When a spam group is entered, all unread articles are marked as spam.")
 
   (defvar gnus-group-spam-exit-processor-ifile "ifile"
-    "The ifile summary exit spam processor.
-Only applicable to spam groups.")
+    "The ifile summary exit spam processor.")
 
   (defvar gnus-group-spam-exit-processor-stat "stat"
-    "The spam-stat summary exit spam processor.
-Only applicable to spam groups.")
+    "The spam-stat summary exit spam processor.")
 
   (defvar gnus-group-spam-exit-processor-bogofilter "bogofilter"
-    "The Bogofilter summary exit spam processor.
-Only applicable to spam groups.")
+    "The Bogofilter summary exit spam processor.")
 
   (defvar gnus-group-spam-exit-processor-blacklist "blacklist"
-    "The Blacklist summary exit spam processor.
-Only applicable to spam groups.")
+    "The Blacklist summary exit spam processor.")
+
+  (defvar gnus-group-spam-exit-processor-report-gmane "report-gmane"
+    "The Gmane reporting summary exit spam processor.
+Only applicable to NNTP groups with articles from Gmane.  See spam-report.el")
 
   (defvar gnus-group-ham-exit-processor-ifile "ifile-ham"
     "The ifile summary exit ham processor.
@@ -1860,6 +1856,7 @@ Only applicable to non-spam (unclassified and ham) groups.")
                                   (variable-item gnus-group-spam-exit-processor-stat)
                                   (variable-item gnus-group-spam-exit-processor-bogofilter)
                                   (variable-item gnus-group-spam-exit-processor-blacklist)
+                                  (variable-item gnus-group-spam-exit-processor-report-gmane)
                                   (variable-item gnus-group-ham-exit-processor-bogofilter)
                                   (variable-item gnus-group-ham-exit-processor-ifile)
                                   (variable-item gnus-group-ham-exit-processor-stat)
@@ -1874,8 +1871,7 @@ Only applicable to non-spam (unclassified and ham) groups.")
    "*Groups in which to automatically process spam or ham articles with
 a backend on summary exit.  If non-nil, this should be a list of group
 name regexps that should match all groups in which to do automatic
-spam processing, associated with the appropriate processor.  This only makes sense
-for mail groups."
+spam processing, associated with the appropriate processor."
    :variable-group spam
    :variable-type '(repeat :tag "Spam/Ham Processors" 
                           (list :tag "Spam Summary Exit Processor Choices"
@@ -1885,6 +1881,7 @@ for mail groups."
                                      (variable-item gnus-group-spam-exit-processor-stat)
                                      (variable-item gnus-group-spam-exit-processor-bogofilter)
                                      (variable-item gnus-group-spam-exit-processor-blacklist)
+                                     (variable-item gnus-group-spam-exit-processor-report-gmane)
                                      (variable-item gnus-group-ham-exit-processor-bogofilter)
                                      (variable-item gnus-group-ham-exit-processor-ifile)
                                      (variable-item gnus-group-ham-exit-processor-stat)
@@ -1949,7 +1946,50 @@ mail groups, and only works in spam groups."
                      (string :tag "Move to a group")
                      (const :tag "Expire" nil))))
    :parameter-document
-   "Where ham articles will go at summary exit from a spam group."))
+   "Where ham articles will go at summary exit from a spam group.")
+
+  (gnus-define-group-parameter 
+   ham-marks
+   :type 'list
+   :parameter-type '(list :tag "Ham mark choices"
+                         (set 
+                          (variable-item gnus-del-mark)
+                          (variable-item gnus-read-mark)
+                          (variable-item gnus-killed-mark)
+                          (variable-item gnus-kill-file-mark)
+                          (variable-item gnus-low-score-mark)))
+
+   :parameter-document
+   "Marks considered ham (positively not spam).  Such articles will be
+processed as ham (non-spam) on group exit.  When nil, the global
+spam-ham-marks variable takes precedence."
+   :variable-default '((".*" ((gnus-del-mark 
+                              gnus-read-mark
+                              gnus-killed-mark 
+                              gnus-kill-file-mark
+                              gnus-low-score-mark))))
+   :variable-group spam
+   :variable-document
+   "*Groups in which to explicitly set the ham marks to some value.")
+
+  (gnus-define-group-parameter 
+   spam-marks
+   :type 'list
+   :parameter-type '(list :tag "Spam mark choices"
+                         (set 
+                          (variable-item gnus-spam-mark)
+                          (variable-item gnus-killed-mark)
+                          (variable-item gnus-kill-file-mark)
+                          (variable-item gnus-low-score-mark)))
+
+   :parameter-document
+   "Marks considered spam.
+Such articles will be processed as spam on group exit.  When nil, the global
+spam-spam-marks variable takes precedence."
+   :variable-default '((".*" ((gnus-spam-mark))))
+   :variable-group spam
+   :variable-document
+   "*Groups in which to explicitly set the spam marks to some value."))
 
 (defcustom gnus-group-uncollapsed-levels 1
   "Number of group name elements to leave alone when making a short group name."
@@ -2082,7 +2122,7 @@ You also need to enable `gnus-agent' for this to have any affect."
   :group 'gnus-agent
   :type 'boolean)
 
-(defcustom gnus-default-charset (mm-guess-mime-charset)
+(defcustom gnus-default-charset 'undecided
   "Default charset assumed to be used when viewing non-ASCII characters.
 This variable is overridden on a group-to-group basis by the
 `gnus-group-charset-alist' variable and is only used on groups not
@@ -2243,6 +2283,8 @@ such as a mark that says whether an article is stored in the cache
   '(gnus-newsrc-options gnus-newsrc-options-n
                        gnus-newsrc-last-checked-date
                        gnus-newsrc-alist gnus-server-alist
+                       gnus-registry-alist
+                       gnus-registry-headers-alist
                        gnus-killed-list gnus-zombie-list
                        gnus-topic-topology gnus-topic-alist
                        gnus-agent-covered-methods gnus-format-specs)
@@ -2252,6 +2294,14 @@ such as a mark that says whether an article is stored in the cache
   "Assoc list of read articles.
 gnus-newsrc-hashtb should be kept so that both hold the same information.")
 
+(defvar gnus-registry-alist nil
+  "Assoc list of registry data.
+gnus-registry.el will populate this if it's loaded.")
+
+(defvar gnus-registry-headers-alist nil
+  "Assoc list of registry header data.
+gnus-registry.el will populate this if it's loaded.")
+
 (defvar gnus-newsrc-hashtb nil
   "Hashtable of gnus-newsrc-alist.")
 
@@ -3131,12 +3181,16 @@ that that variable is buffer-local to the summary buffers."
   (format "%s+%s" (car method) (nth 1 method)))
 
 (defun gnus-group-prefixed-name (group method &optional full)
-  "Return the whole name from GROUP and METHOD.  Call with full set to
-get the fully qualified group name (even if the server is native)."
-  (and (stringp method) (setq method (gnus-server-to-method method)))
+  "Return the whole name from GROUP and METHOD.
+Call with full set to get the fully qualified group name (even if the
+server is native)."
+  (when (stringp method)
+    (setq method (gnus-server-to-method method)))
   (if (or (not method)
          (and (not full) (gnus-server-equal method "native"))
-         (string-match ":" group))
+         ;;;!!! This might not be right.  We'll see...
+         ;(string-match ":" group)
+         )
       group
     (concat (gnus-method-to-server-name method) ":" group)))
 
@@ -3152,7 +3206,9 @@ native."
 
 (defun gnus-group-guess-full-name (group)
   "Guess the full name from GROUP, even if the method is native."
-  (gnus-group-full-name group (gnus-find-method-for-group group)))
+  (if (gnus-group-prefixed-p group)
+      group
+    (gnus-group-full-name group (gnus-find-method-for-group group))))
 
 (defun gnus-group-real-prefix (group)
   "Return the prefix of the current group name."
@@ -3160,6 +3216,17 @@ native."
       (substring group 0 (match-end 0))
     ""))
 
+(defun gnus-group-short-name (group)
+  "Return the short group name."
+  (let ((prefix (gnus-group-real-prefix group)))
+    (if (< 0 (length prefix))
+       (substring group (length prefix) nil)
+      group)))
+
+(defun gnus-group-prefixed-p (group)
+  "Return the prefix of the current group name."
+  (< 0 (length (gnus-group-real-prefix group))))
+
 (defun gnus-summary-buffer-name (group)
   "Return the summary buffer name of GROUP."
   (concat "*Summary " (gnus-group-decoded-name group) "*"))