(clean): New rule.
[gnus] / lisp / gnus-cus.el
index 55c814e..8aac9d1 100644 (file)
@@ -1,7 +1,7 @@
 ;;; gnus-cus.el --- customization commands for Gnus
-;;
-;; Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003
-;;        Free Software Foundation, Inc.
+
+;; Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003, 2004,
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: news
@@ -20,8 +20,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 
 ;;; Widgets:
 
+(defvar gnus-custom-map
+  (let ((map (make-keymap)))
+    (set-keymap-parent map widget-keymap)
+    (suppress-keymap map)
+    (define-key map [mouse-1] 'widget-move-and-invoke)
+    map)
+  "Keymap for editing Gnus customization buffers.")
+
 (defun gnus-custom-mode ()
   "Major mode for editing Gnus customization buffers.
 
@@ -51,7 +59,7 @@ if that value is non-nil."
   (kill-all-local-variables)
   (setq major-mode 'gnus-custom-mode
        mode-name "Gnus Customize")
-  (use-local-map widget-keymap)
+  (use-local-map gnus-custom-map)
   ;; Emacs 21 stuff:
   (when (and (facep 'custom-button-face)
             (facep 'custom-button-pressed-face))
@@ -67,7 +75,7 @@ if that value is non-nil."
     (set (make-local-variable 'widget-push-button-suffix) "")
     (set (make-local-variable 'widget-link-prefix) "")
     (set (make-local-variable 'widget-link-suffix) ""))
-  (gnus-run-hooks 'gnus-custom-mode-hook))
+  (gnus-run-mode-hooks 'gnus-custom-mode-hook))
 
 ;;; Group Customization:
 
@@ -204,8 +212,7 @@ Which articles to display on entering 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..")
+Always display this group, even when there are no unread articles in it.")
 
     (highlight-words
      (choice :tag "Highlight words"
@@ -228,8 +235,11 @@ See `gnus-emphasis-alist'.")
                              (const signature-file)
                              (const organization)
                              (const address)
+                             (const x-face-file)
                              (const name)
-                             (const body))
+                             (const body)
+                             (symbol)
+                             (string :tag "Header"))
                      (string :format "%v"))))
      "post style.
 See `gnus-posting-styles'."))
@@ -313,15 +323,15 @@ has been stored locally for at least this many days."
               (const :format "Disable " DISABLE))
        "\nEnable, or disable, agent expiration in this group or topic."
        gnus-agent-cat-enable-expiration)
-      (agent-disable-undownloaded-faces
-       (boolean :tag "Disable Agent Faces")
-       "Have the summary buffer ignore the agent's undownloaded faces.
-These faces, when used, act as a warning that an article has not been
-fetched into either the agent nor the cache.  This is of most use to
-users who use the agent as a cache (i.e. they only operate on articles
-that have been downloaded).  Disable to display normal article faces
-even when the article hasn't been downloaded."
-       gnus-agent-cat-disable-undownloaded-faces))
+      (agent-enable-undownloaded-faces
+       (boolean :tag "Enable Agent Faces")
+       "Have the summary buffer use the agent's undownloaded faces.
+These faces, when enabled, act as a warning that an article has not
+been fetched into either the agent nor the cache.  This is of most use
+to users who use the agent as a cache (i.e. they only operate on
+articles that have been downloaded).  Leave disabled to display normal
+article faces even when the article hasn't been downloaded."
+gnus-agent-cat-enable-undownloaded-faces))
     "Alist of group parameters that are not also topic parameters.
 
 Each entry has the form (NAME TYPE DOC ACCESSOR), where NAME is the
@@ -480,7 +490,7 @@ form, but who cares?"
            (widget-create 'sexp
                           :tag "Method"
                           :value (gnus-info-method info))))
-    (use-local-map widget-keymap)
+    (use-local-map gnus-custom-map)
     (widget-setup)
     (buffer-enable-undo)
     (goto-char (point-min))))
@@ -773,8 +783,8 @@ When called interactively, FILE defaults to the current score file.
 This can be changed using the `\\[gnus-score-change-score-file]' command."
   (interactive (list gnus-current-score-file))
   (unless file
-    (error (format "No score file for %s"
-                  (gnus-group-decoded-name gnus-newsgroup-name))))
+    (error "No score file for %s"
+           (gnus-group-decoded-name gnus-newsgroup-name)))
   (let ((scores (gnus-score-load file))
        (types (mapcar (lambda (entry)
                         `(group :format "%v%h\n"
@@ -874,7 +884,7 @@ articles in the thread.
                         '(repeat :inline t
                                  :tag "Unknown entries"
                                  sexp)))
-    (use-local-map widget-keymap)
+    (use-local-map gnus-custom-map)
     (widget-setup)))
 
 (defun gnus-score-customize-done (&rest ignore)
@@ -898,6 +908,7 @@ articles in the thread.
   (defvar gnus-agent-cat-days-until-old)
   (defvar gnus-agent-cat-predicate)
   (defvar gnus-agent-cat-groups)
+  (defvar gnus-agent-cat-enable-undownloaded-faces)
 )
 
 (defun gnus-trim-whitespace (s)
@@ -915,7 +926,8 @@ articles in the thread.
             (val (,field info))
             (deflt (if (,field defaults)
                        (concat " [" (gnus-trim-whitespace
-                                     (pp-to-string (,field defaults))) "]")))
+                                     (gnus-pp-to-string (,field defaults)))
+                               "]")))
             symb)
 
        (if (eq (car type) 'radio)
@@ -929,11 +941,11 @@ articles in the thread.
 
        (if deflt
            (let ((tag (cdr (memq :tag type))))
-             (if (string-match "\n" deflt)
-                 (progn (while (progn (setq deflt (replace-match "\n " t t
-                                                                 deflt))
-                                      (string-match "\n" deflt (match-end 0))))
-                        (setq deflt (concat "\n" deflt))))
+             (when (string-match "\n" deflt)
+              (while (progn (setq deflt (replace-match "\n " t t
+                                                       deflt))
+                            (string-match "\n" deflt (match-end 0))))
+              (setq deflt (concat "\n" deflt)))
 
              (setcar tag (concat (car tag) deflt))))
 
@@ -984,7 +996,7 @@ articles in the thread.
                    (widgets category-fields))
               (while widgets
                 (let* ((widget (pop widgets))
-                       (value (ignore-errors (widget-value widget))))
+                       (value (condition-case nil (widget-value widget) (error))))
                   (eval `(setf (,(widget-get widget :accessor) ',info)
                                ',value)))))
             (gnus-category-write)
@@ -1013,9 +1025,9 @@ articles in the thread.
       ;; gnus-agent-cat-prepare-category-field as I don't want the
       ;; group list to appear when customizing a topic.
       (widget-insert "\n")
-      
-      (let ((symb 
-             (set 
+
+      (let ((symb
+             (set
               (make-local-variable 'gnus-agent-cat-groups)
               (widget-create
                `(choice
@@ -1045,7 +1057,11 @@ articles in the thread.
       (gnus-agent-cat-prepare-category-field agent-enable-expiration)
       (gnus-agent-cat-prepare-category-field agent-days-until-old)
 
-      (use-local-map widget-keymap)
+      (widget-insert "\nVisual Settings ")
+
+      (gnus-agent-cat-prepare-category-field agent-enable-undownloaded-faces)
+
+      (use-local-map gnus-custom-map)
       (widget-setup)
       (buffer-enable-undo))))
 
@@ -1053,4 +1069,5 @@ articles in the thread.
 
 (provide 'gnus-cus)
 
+;;; arch-tag: a37c285a-49bc-4235-8244-804536effeaf
 ;;; gnus-cus.el ends here