changeset 25683:d1179efb4e87

Don't define-widget-keywords. Change from Didier Verna: (custom-set-variables): the arguments can now have a custom comment as fifth element.
author Dave Love <fx@gnu.org>
date Mon, 13 Sep 1999 13:03:05 +0000
parents f8543a6d88ca
children e3ed0e86532c
files lisp/custom.el
diffstat 1 files changed, 30 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/custom.el	Mon Sep 13 11:14:29 1999 +0000
+++ b/lisp/custom.el	Mon Sep 13 13:03:05 1999 +0000
@@ -1,11 +1,10 @@
 ;;; custom.el -- Tools for declaring and initializing options.
 ;;
-;; Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: help, faces
-;; Version: 1.9900
-;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
+;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (probably obsolete)
 
 ;; This file is part of GNU Emacs.
 
@@ -26,11 +25,9 @@
 
 ;;; Commentary:
 ;;
-;; If you want to use this code, please visit the URL above.
-;;
 ;; This file only contain the code needed to declare and initialize
 ;; user options.  The code to customize options is autoloaded from
-;; `cus-edit.el'. 
+;; `cus-edit.el' and is documented in the Emacs Lisp Reference manual.
 
 ;; The code implementing face declarations is in `cus-face.el'
 
@@ -38,10 +35,6 @@
 
 (require 'widget)
 
-(define-widget-keywords :initialize :set :get :require :prefix :tag
-  :load :link :options :type :group) 
-
-
 (defvar custom-define-hook nil
   ;; Customize information for this option is in `cus-edit.el'.
   "Hook called after defining each customize option.")
@@ -69,7 +62,7 @@
 if any, or VALUE."
   (unless (default-boundp symbol)
     (funcall (or (get symbol 'custom-set) 'set-default)
-	     symbol 
+	     symbol
 	     (if (get symbol 'saved-value)
 		 (eval (car (get symbol 'saved-value)))
 	       (eval value)))))
@@ -82,7 +75,7 @@
 or the value in the symbol's `saved-value' property if any,
 or (last of all) VALUE."
     (funcall (or (get symbol 'custom-set) 'set-default)
-	     symbol 
+	     symbol
 	     (cond ((default-boundp symbol)
 		    (funcall (or (get symbol 'custom-get) 'default-value)
 			     symbol))
@@ -93,7 +86,7 @@
 
 (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 the
 not using the standard setting.
 For the standard setting, use the `set-default'."
   (cond ((default-boundp symbol)
@@ -116,13 +109,13 @@
   (put symbol 'standard-value (list default))
   ;; Maybe this option was rogue in an earlier version.  It no longer is.
   (when (get symbol 'force-value)
-    ;; It no longer is.    
+    ;; It no longer is.
     (put symbol 'force-value nil))
   (when doc
     (put symbol 'variable-documentation doc))
   (let ((initialize 'custom-initialize-reset)
 	(requests nil))
-    (while args 
+    (while args
       (let ((arg (car args)))
 	(setq args (cdr args))
 	(unless (symbolp arg)
@@ -168,27 +161,27 @@
 If SYMBOL is not already bound, initialize it to VALUE.
 The remaining arguments should have the form
 
-   [KEYWORD VALUE]... 
+   [KEYWORD VALUE]...
 
 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.  
+:group  VALUE should be a customization group.
         Add SYMBOL to that group.
 :initialize
 	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' 
-:set	VALUE should be a function to set the value of the symbol. 
+	`custom-initialize-default'
+: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'.
 :get	VALUE should be a function to extract the value of symbol.
 	The function takes one argument, a symbol, and should return
 	the current value for that symbol.  The default choice of function
-	is `custom-default-value'. 
+	is `custom-default-value'.
 :require
 	VALUE should be a feature symbol.  If you save a value
 	for this option, then when your `.emacs' file loads the value,
@@ -264,13 +257,13 @@
 
 (defun custom-declare-group (symbol members doc &rest args)
   "Like `defgroup', but SYMBOL is evaluated as a normal argument."
-  (while members 
+  (while members
     (apply 'custom-add-to-group symbol (car members))
     (setq members (cdr members)))
   (put symbol 'custom-group (nconc members (get symbol 'custom-group)))
   (when doc
     (put symbol 'group-documentation doc))
-  (while args 
+  (while args
     (let ((arg (car args)))
       (setq args (cdr args))
       (unless (symbolp arg)
@@ -301,7 +294,7 @@
 
 The remaining arguments should have the form
 
-   [KEYWORD VALUE]... 
+   [KEYWORD VALUE]...
 
 The following KEYWORD's are defined:
 
@@ -329,7 +322,7 @@
 (defun custom-handle-all-keywords (symbol args type)
   "For customization option SYMBOL, handle keyword arguments ARGS.
 Third argument TYPE is the custom option type."
-  (while args 
+  (while args
     (let ((arg (car args)))
       (setq args (cdr args))
       (unless (symbolp arg)
@@ -339,7 +332,7 @@
 	(unless args
 	  (error "Keyword %s is missing an argument" keyword))
 	(setq args (cdr args))
-	(custom-handle-keyword symbol keyword value type)))))  
+	(custom-handle-keyword symbol keyword value type)))))
 
 (defun custom-handle-keyword (symbol keyword value type)
   "For customization option SYMBOL, handle KEYWORD with VALUE.
@@ -394,28 +387,32 @@
 (put 'custom-local-buffer 'permanent-local t)
 
 (defun custom-set-variables (&rest args)
-  "Initialize variables according to user preferences.  
+  "Initialize variables according to user preferences.
 
 The arguments should be a list where each entry has the form:
 
-  (SYMBOL VALUE [NOW])
+  (SYMBOL VALUE [NOW [REQUEST [COMMENT]]])
 
 The unevaluated VALUE is stored as the saved value for SYMBOL.
 If NOW is present and non-nil, VALUE is also evaluated and bound as
-the default value for the SYMBOL."
-  (while args 
+the default value for the SYMBOL.
+REQUEST is a list of features we must require for SYMBOL.
+COMMENT is a comment string about SYMBOL."
+  (while args
     (let ((entry (car args)))
       (if (listp entry)
 	  (let* ((symbol (nth 0 entry))
 		 (value (nth 1 entry))
 		 (now (nth 2 entry))
 		 (requests (nth 3 entry))
+		 (comment (nth 4 entry))
 		 set)
 	    (when requests
 	      (put symbol 'custom-requests requests)
 	      (mapcar 'require requests))
 	    (setq set (or (get symbol 'custom-set) 'custom-set-default))
 	    (put symbol 'saved-value (list value))
+	    (put symbol 'saved-variable-comment comment)
 	    ;; Allow for errors in the case where the setter has
 	    ;; changed between versions, say.
 	    (condition-case nil
@@ -427,7 +424,9 @@
 		       ;; Something already set this, overwrite it.
 		       (funcall set symbol (eval value))))
 	      (error nil))
-	    (setq args (cdr args)))
+	    (setq args (cdr args))
+	    (and (or now (default-boundp symbol))
+		 (put symbol 'variable-comment comment)))
 	;; Old format, a plist of SYMBOL VALUE pairs.
 	(message "Warning: old format `custom-set-variables'")
 	(ding)
@@ -456,4 +455,4 @@
 
 (provide 'custom)
 
-;; custom.el ends here
+;;; custom.el ends here