# HG changeset patch # User Stefan Monnier # Date 1006047312 0 # Node ID fc0e6d3f905d91cf3b3d586f8e1a0085ffaab695 # Parent 0ca8b0f41ebdcd6f0226b00e7313588c0b4b2b91 (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. diff -r 0ca8b0f41ebd -r fc0e6d3f905d lisp/custom.el --- 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))