(completion-ignored-extensions) [ms-dos, windows-nt]:
[bpt/emacs.git] / lisp / custom.el
index ca5948d..43c3184 100644 (file)
@@ -1,6 +1,6 @@
-;;; custom.el -- Tools for declaring and initializing options.
+;;; custom.el --- tools for declaring and initializing options
 ;;
-;; Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Maintainer: FSF
@@ -86,9 +86,9 @@ or (last of all) VALUE."
 
 (defun custom-initialize-changed (symbol value)
   "Initialize SYMBOL with VALUE.
-Like `custom-initialize-reset', but only use the `:set' function if the
+Like `custom-initialize-reset', but only use the `:set' function if
 not using the standard setting.
-For the standard setting, use the `set-default'."
+For the standard setting, use `set-default'."
   (cond ((default-boundp symbol)
         (funcall (or (get symbol 'custom-set) 'set-default)
                  symbol
@@ -165,7 +165,6 @@ The remaining arguments should have the form
 The following keywords are meaningful:
 
 :type  VALUE should be a widget type for editing the symbols value.
-       The default is `sexp'.
 :options VALUE should be a list of valid members of the widget type.
 :group  VALUE should be a customization group.
         Add SYMBOL to that group.
@@ -173,7 +172,7 @@ The following keywords are meaningful:
        VALUE should be a function used to initialize the
        variable.  It takes two arguments, the symbol and value
        given in the `defcustom' call.  The default is
-       `custom-initialize-default'
+       `custom-initialize-reset.'
 :set   VALUE should be a function to set the value of the symbol.
        It takes two arguments, the symbol to set and the value to
        give it.  The default choice of function is `custom-set-default'.
@@ -189,6 +188,9 @@ The following keywords are meaningful:
         VALUE should be a string specifying that the variable was
         first introduced, or its default value was changed, in Emacs
         version VERSION.
+:set-after VARIABLE
+       Specifies that SYMBOL should be set after VARIABLE when
+       both have been customized.
 
 Read the section about customization in the Emacs Lisp manual for more
 information."
@@ -322,7 +324,6 @@ information."
 If there already is an entry for OPTION and WIDGET, nothing is done."
   (let ((members (get group 'custom-group))
        (entry (list option widget)))
-    (message "adding %s" entry)
     (unless (member entry members)
       (put group 'custom-group (nconc members (list entry))))))
 
@@ -440,8 +441,17 @@ COMMENT is a comment string about SYMBOL."
                  (cond ((and 1-then-2 2-then-1)
                         (error "Circular custom dependency between `%s' and `%s'"
                                sym1 sym2))
+                       (1-then-2 t)
                        (2-then-1 nil)
-                       (t t))))))
+                       ;; Put symbols with :require last.  The macro
+                       ;; define-minor-mode generates a defcustom
+                       ;; with a :require and a :set, where the
+                       ;; setter function calls the mode function.
+                       ;; Putting symbols with :require last ensures
+                       ;; that the mode function will see other
+                       ;; customized values rather than default
+                       ;; values.
+                       (t (nth 3 a2)))))))
   (while args
     (let ((entry (car args)))
       (if (listp entry)