changeset 41224:fc0e6d3f905d

(custom-current-group-alist): New var. (custom-declare-group): Set it. (custom-current-group): New fun. (custom-declare-variable, custom-handle-all-keywords): Use it as a default if no :group argument is specified.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 18 Nov 2001 01:35:12 +0000
parents 0ca8b0f41ebd
children 74219f3013c6
files lisp/custom.el
diffstat 1 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/custom.el	Sun Nov 18 01:29:22 2001 +0000
+++ b/lisp/custom.el	Sun Nov 18 01:35:12 2001 +0000
@@ -39,6 +39,9 @@
   ;; Customize information for this option is in `cus-edit.el'.
   "Hook called after defining each customize option.")
 
+(defvar custom-current-group-alist nil
+  "Alist of (FILE . GROUP) indicating the current group to use for FILE.")
+
 ;;; The `defcustom' Macro.
 
 (defun custom-initialize-default (symbol value)
@@ -114,6 +117,8 @@
     (put symbol 'variable-documentation doc))
   (let ((initialize 'custom-initialize-reset)
 	(requests nil))
+    (unless (memq :group args)
+      (custom-add-to-group (custom-current-group) symbol 'custom-variable))
     (while args
       (let ((arg (car args)))
 	(setq args (cdr args))
@@ -262,6 +267,9 @@
 
 ;;; The `defgroup' Macro.
 
+(defun custom-current-group ()
+  (cdr (assoc load-file-name custom-current-group-alist)))
+
 (defun custom-declare-group (symbol members doc &rest args)
   "Like `defgroup', but SYMBOL is evaluated as a normal argument."
   (while members
@@ -286,6 +294,10 @@
 	      (t
 	       (custom-handle-keyword symbol keyword value
 				      'custom-group))))))
+  ;; Record the group on the `current' list.
+  (let ((elt (assoc load-file-name custom-current-group-alist)))
+    (if elt (setcdr elt symbol)
+      (push (cons load-file-name symbol) custom-current-group-alist)))
   (run-hooks 'custom-define-hook)
   symbol)
 
@@ -332,6 +344,8 @@
 (defun custom-handle-all-keywords (symbol args type)
   "For customization option SYMBOL, handle keyword arguments ARGS.
 Third argument TYPE is the custom option type."
+  (unless (memq :group args)
+    (custom-add-to-group (custom-current-group) symbol 'custom-face))
   (while args
     (let ((arg (car args)))
       (setq args (cdr args))