*** empty log message ***
[gnus] / lisp / gnus-cus.el
index 37c0bf9..a560e2a 100644 (file)
@@ -28,6 +28,7 @@
 
 (require 'wid-edit)
 (require 'gnus-score)
+(require 'gnus-topic)
 
 ;;; Widgets:
 
@@ -51,7 +52,7 @@ if that value is non-nil."
   (setq major-mode 'gnus-custom-mode
        mode-name "Gnus Customize")
   (use-local-map widget-keymap)
-  (run-hooks 'gnus-custom-mode-hook))
+  (gnus-run-hooks 'gnus-custom-mode-hook))
 
 ;;; Group Customization:
 
@@ -103,6 +104,11 @@ is present and a string, this string will be inserted literally as a
 `gcc' header (this symbol takes precedence over any default `Gcc'
 rules as described later).")
 
+    (banner (choice :tag "Banner"
+                   (const signature)
+                   string ) "\
+Banner to be removed from articles.")
+a
     (auto-expire (const :tag "Automatic Expire" t) "\
 All articles that are read will be marked as expirable.")
 
@@ -155,7 +161,14 @@ Which articles to display on entering the group.
      unread and ticked articles.")
 
     (comment (string :tag  "Comment") "\
-An arbitrary comment on the group."))
+An arbitrary comment on the group.")
+
+    (visible (const :tag "Permanently visible" t) "\
+Always display this group, even when there are no unread articles
+in it..")
+
+    (charset (string :tag "Charset") "\
+The default charset to use in the group."))
   "Alist of valid group parameters.
 
 Each entry has the form (NAME TYPE DOC), where NAME is the parameter
@@ -165,35 +178,44 @@ DOC is a documentation string for the parameter.")
 (defvar gnus-custom-params)
 (defvar gnus-custom-method)
 (defvar gnus-custom-group)
+(defvar gnus-custom-topic)
 
-(defun gnus-group-customize (group &optional part)
-  "Edit the group on the current line."
-  (interactive (list (gnus-group-group-name)))
-  (let ((part (or part 'info))
-       info
+(defun gnus-group-customize (group &optional topic)
+  "Edit the group or topic on the current line."
+  (interactive (list (gnus-group-group-name) (gnus-group-topic-name)))
+  (let (info
        (types (mapcar (lambda (entry)
                         `(cons :format "%v%h\n"
                                :doc ,(nth 2 entry)
                                (const :format "" ,(nth 0 entry))
                                ,(nth 1 entry)))
                       gnus-group-parameters)))
-    (unless group
+    (unless (or group topic)
       (error "No group on current line"))
-    (unless (setq info (gnus-get-info group))
+    (when (and group topic)
+      (error "Both a group an topic on current line"))
+    (unless (or topic (setq info (gnus-get-info group)))
       (error "Killed group; can't be edited"))
     ;; Ready.
-    (kill-buffer (get-buffer-create "*Gnus Customize*"))
-    (switch-to-buffer (get-buffer-create "*Gnus Customize*"))
+    (kill-buffer (gnus-get-buffer-create "*Gnus Customize*"))
+    (switch-to-buffer (gnus-get-buffer-create "*Gnus Customize*"))
     (gnus-custom-mode)
     (make-local-variable 'gnus-custom-group)
     (setq gnus-custom-group group)
+    (make-local-variable 'gnus-custom-topic)
+    (setq gnus-custom-topic topic)
     (widget-insert "Customize the ")
-    (widget-create 'info-link
-                  :help-echo "Push me to learn more."
-                  :tag "group parameters"
-                  "(gnus)Group Parameters")
+    (if group
+       (widget-create 'info-link
+                      :help-echo "Push me to learn more."
+                      :tag "group parameters"
+                      "(gnus)Group Parameters")
+      (widget-create 'info-link
+                    :help-echo "Push me to learn more."
+                    :tag  "topic parameters"
+                    "(gnus)Topic Parameters"))
     (widget-insert " for <")
-    (widget-insert group)
+    (widget-insert (or group topic))
     (widget-insert "> and press ")
     (widget-create 'push-button
                   :tag "done"
@@ -203,15 +225,17 @@ DOC is a documentation string for the parameter.")
     (make-local-variable 'gnus-custom-params)
     (setq gnus-custom-params
          (widget-create 'group
-                        :value (gnus-info-params info)
+                        :value (if group
+                                   (gnus-info-params info)
+                                 (gnus-topic-parameters topic))
                         `(set :inline t
                               :greedy t
                               :tag "Parameters"
                               :format "%t:\n%h%v"
                               :doc "\
 These special paramerters are recognized by Gnus.
-Check the [ ] for the parameters you want to apply to this group, then
-edit the value to suit your taste."
+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)
                         '(repeat :inline t
                                  :tag "Variables"
@@ -229,7 +253,7 @@ 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?"
-                                 (group :value (nil nil)
+                                 (cons :format "%v" :value (nil .  nil)
                                         (symbol :tag "Variable")
                                         (sexp :tag
                                               "Value")))
@@ -237,26 +261,30 @@ form, but who cares?"
                         '(repeat :inline t
                                  :tag "Unknown entries"
                                  sexp)))
-    (widget-insert "\n\nYou can also edit the ")
-    (widget-create 'info-link
-                  :tag "select method"
-                  :help-echo "Push me to learn more about select methods."
-                  "(gnus)Select Methods")
-    (widget-insert " for the group.\n")
-    (setq gnus-custom-method
-         (widget-create 'sexp
-                        :tag "Method"
-                        :value (gnus-info-method info)))
+    (when group
+      (widget-insert "\n\nYou can also edit the ")
+      (widget-create 'info-link
+                    :tag "select method"
+                    :help-echo "Push me to learn more about select methods."
+                    "(gnus)Select Methods")
+      (widget-insert " for the group.\n")
+      (setq gnus-custom-method
+           (widget-create 'sexp
+                          :tag "Method"
+                          :value (gnus-info-method info))))
     (use-local-map widget-keymap)
     (widget-setup)))
 
 (defun gnus-group-customize-done (&rest ignore)
   "Apply changes and bury the buffer."
   (interactive)
-  (gnus-group-edit-group-done 'params gnus-custom-group
-                             (widget-value gnus-custom-params))
-  (gnus-group-edit-group-done 'method gnus-custom-group
-                             (widget-value gnus-custom-method))
+  (if gnus-custom-topic
+      (gnus-topic-set-parameters gnus-custom-topic
+                                (widget-value gnus-custom-params))
+    (gnus-group-edit-group-done 'params gnus-custom-group
+                               (widget-value gnus-custom-params))
+    (gnus-group-edit-group-done 'method gnus-custom-group
+                               (widget-value gnus-custom-method)))
   (bury-buffer))
 
 ;;; Score Customization:
@@ -283,12 +311,12 @@ number will be marked as read and removed from the summary buffer.
 `gnus-thread-score-function' says how to compute the total score
 for a thread.")
 
-    (files (repeat :tag "Files" file) "\
+    (files (repeat :inline t :tag "Files" file) "\
 The value of this entry should be any number of file names.
 These files are assumed to be score files as well, and will be loaded
 the same way this one was.")
 
-    (exclude-files (repeat :tag "Exclude-files" file) "\
+    (exclude-files (repeat :inline t :tag "Exclude-files" file) "\
 The clue of this entry should be any number of files.
 These files will not be loaded, even though they would normally be so,
 for some reason or other.")
@@ -540,8 +568,8 @@ eh?")))
                         ,(nth 1 entry)))
               gnus-score-parameters)))
     ;; Ready.
-    (kill-buffer (get-buffer-create "*Gnus Customize*"))
-    (switch-to-buffer (get-buffer-create "*Gnus Customize*"))
+    (kill-buffer (gnus-get-buffer-create "*Gnus Customize*"))
+    (switch-to-buffer (gnus-get-buffer-create "*Gnus Customize*"))
     (gnus-custom-mode)
     (make-local-variable 'gnus-custom-score-alist)
     (setq gnus-custom-score-alist scores)
@@ -577,6 +605,7 @@ if you do all your changes will be lost.  ")
                                     (gnus-score-string :tag "Subject")
                                     (gnus-score-string :tag "References")
                                     (gnus-score-string :tag "Xref")
+                                    (gnus-score-string :tag "Extra")
                                     (gnus-score-string :tag "Message-ID")
                                     (gnus-score-integer :tag "Lines")
                                     (gnus-score-integer :tag "Chars")
@@ -647,4 +676,3 @@ articles in the thread.
 (provide 'gnus-cus)
 
 ;;; gnus-cus.el ends here
-