Sync with `t-gnus-6_14'.
[elisp/gnus.git-] / lisp / gnus-cus.el
index 8127d65..7af9c93 100644 (file)
@@ -56,7 +56,7 @@ if that value is non-nil."
 
 ;;; Group Customization:
 
-(defcustom gnus-group-parameters
+(defconst gnus-group-parameters
   '((to-address (gnus-email-address :tag "To Address") "\
 This will be used when doing followups and posts.
 
@@ -147,7 +147,7 @@ All posts will be send to the specified group.")
 Specify default value for GCC header.
 
 If this symbol is present in the group parameter list and set to `t',
-new composed messages will be `Gcc''d to the current group. If it is
+new composed messages will be `Gcc''d to the current group.  If it is
 present and set to `none', no `Gcc:' header will be generated, if it
 is present and a string, this string will be inserted literally as a
 `gcc' header (this symbol takes precedence over any default `Gcc'
@@ -155,8 +155,9 @@ rules as described later).")
 
     (banner (choice :tag "Banner"
                    (const signature)
-                   string ) "\
-Banner to be removed from articles.")
+                   regexp
+                   (const :tag "None" nil)) "\
+Regular expression matching banners to be removed from articles.")
 
     (auto-expire (const :tag "Automatic Expire" t) "\
 All articles that are read will be marked as expirable.")
@@ -176,10 +177,19 @@ Use with caution.")
 When to expire.
 
 Overrides any `nnmail-expiry-wait' and `nnmail-expiry-wait-function'
-when expiring expirable messages. The value can either be a number of
+when expiring expirable messages.  The value can either be a number of
 days (not necessarily an integer) or the symbols `never' or
 `immediate'.")
 
+    (expiry-target (choice :tag "Expiry Target"
+                           :value delete
+                           (const delete)
+                           (function :format "%v" nnmail-)
+                           string) "\
+Where expired messages end up.
+
+Overrides `nnmail-expiry-target', which see.")
+
     (score-file (file :tag "Score File") "\
 Make the specified file into the current score file.
 This means that all score commands you issue will end up in this file.")
@@ -236,14 +246,33 @@ default charset will be used instead.")
                           (number :tag "Group for displayed part" 0)
                           (symbol :tag "Face" 
                                   gnus-emphasis-highlight-words))))
-  "highlight regexps.
+     "highlight regexps.
 See gnus-emphasis-alist."))
-  "Alist of valid group parameters.
+  "Alist of valid group or topic parameters.
 
 Each entry has the form (NAME TYPE DOC), where NAME is the parameter
 itself (a symbol), TYPE is the parameters type (a sexp widget), and
 DOC is a documentation string for the parameter.")
 
+(defconst gnus-extra-topic-parameters
+  '((subscribe (regexp :tag "Subscribe") "\
+If `gnus-subscribe-newsgroup-method' is set to
+`gnus-subscribe-topics', new groups that matches this regexp will
+automatically be subscribed to this topic")) 
+  "Alist of topic parameters that are not also group parameters.
+
+Each entry has the form (NAME TYPE DOC), where NAME is the parameter
+itself (a symbol), TYPE is the parameters type (a sexp widget), and
+DOC is a documentation string for the parameter.")
+
+(defconst gnus-extra-group-parameters
+  '((uidvalidity (string :tag "IMAP uidvalidity") "\
+Server-assigned value attached to IMAP groups, used to maintain consistency."))
+  "Alist of group parameters that are not also topic parameters.
+
+Each entry has the form (NAME TYPE DOC), where NAME is the parameter
+itself (a symbol), TYPE is the parameters type (a sexp widget), and
+DOC is a documentation string for the parameter.")
 (defvar gnus-custom-params)
 (defvar gnus-custom-method)
 (defvar gnus-custom-group)
@@ -258,7 +287,10 @@ DOC is a documentation string for the parameter.")
                                :doc ,(nth 2 entry)
                                (const :format "" ,(nth 0 entry))
                                ,(nth 1 entry)))
-                      gnus-group-parameters)))
+                      (append gnus-group-parameters 
+                              (if group
+                                  gnus-extra-group-parameters
+                                gnus-extra-topic-parameters)))))
     (unless (or group topic)
       (error "No group on current line"))
     (when (and group topic)
@@ -284,7 +316,7 @@ DOC is a documentation string for the parameter.")
                     :tag  "topic parameters"
                     "(gnus)Topic Parameters"))
     (widget-insert " for <")
-    (widget-insert (or group topic))
+    (widget-insert (gnus-group-decoded-name (or group topic)))
     (widget-insert "> and press ")
     (widget-create 'push-button
                   :tag "done"
@@ -302,7 +334,7 @@ DOC is a documentation string for the parameter.")
                               :tag "Parameters"
                               :format "%t:\n%h%v"
                               :doc "\
-These special paramerters are recognized by Gnus.
+These special parameters are recognized by Gnus.
 Check the [ ] for the parameters you want to apply to this group or
 to the groups in this topic, then edit the value to suit your taste."
                               ,@types)
@@ -322,10 +354,10 @@ like.  If you want to hear a beep when you enter a group, you could
 put something like `(dummy-variable (ding))' in the parameters of that
 group.  `dummy-variable' will be set to the result of the `(ding)'
 form, but who cares?"
-                                 (cons :format "%v" :value (nil .  nil)
-                                        (symbol :tag "Variable")
-                                        (sexp :tag
-                                              "Value")))
+                                 (list :format "%v" :value (nil nil)
+                                       (symbol :tag "Variable")
+                                       (sexp :tag
+                                             "Value")))
 
                         '(repeat :inline t
                                  :tag "Unknown entries"
@@ -470,9 +502,9 @@ documentation string for the parameter.")
         (item `(const :format "" :value ,(downcase tag)))
         (match '(string :tag "Match"))
         (score '(choice :tag "Score"
-                       (const :tag "default" nil)
-                       (integer :format "%v"
-                                :hide-front-space t)))
+                        (const :tag "default" nil)
+                        (integer :format "%v"
+                                 :hide-front-space t)))
         (expire '(choice :tag "Expire"
                          (const :tag "off" nil)
                          (integer :format "%v"
@@ -543,9 +575,9 @@ each score entry has four elements:
         (item `(const :format "" :value ,(downcase tag)))
         (match '(integer :tag "Match"))
         (score '(choice :tag "Score"
-                       (const :tag "default" nil)
-                       (integer :format "%v"
-                                :hide-front-space t)))
+                        (const :tag "default" nil)
+                        (integer :format "%v"
+                                 :hide-front-space t)))
         (expire '(choice :tag "Expire"
                          (const :tag "off" nil)
                          (integer :format "%v"
@@ -580,9 +612,9 @@ each score entry has four elements:
         (item `(const :format "" :value ,(downcase tag)))
         (match '(string :tag "Match"))
         (score '(choice :tag "Score"
-                       (const :tag "default" nil)
-                       (integer :format "%v"
-                                :hide-front-space t)))
+                        (const :tag "default" nil)
+                        (integer :format "%v"
+                                 :hide-front-space t)))
         (expire '(choice :tag "Expire"
                          (const :tag "off" nil)
                          (integer :format "%v"
@@ -632,11 +664,11 @@ eh?")))
   (interactive (list gnus-current-score-file))
   (let ((scores (gnus-score-load file))
        (types (mapcar (lambda (entry)
-                `(group :format "%v%h\n"
-                        :doc ,(nth 2 entry)
-                        (const :format "" ,(nth 0 entry))
-                        ,(nth 1 entry)))
-              gnus-score-parameters)))
+                        `(group :format "%v%h\n"
+                                :doc ,(nth 2 entry)
+                                (const :format "" ,(nth 0 entry))
+                                ,(nth 1 entry)))
+                      gnus-score-parameters)))
     ;; Ready.
     (kill-buffer (gnus-get-buffer-create "*Gnus Customize*"))
     (switch-to-buffer (gnus-get-buffer-create "*Gnus Customize*"))