summaryrefslogtreecommitdiff
path: root/lisp/custom.el
diff options
context:
space:
mode:
authorDave Love <fx@gnu.org>1999-09-13 13:03:05 +0000
committerDave Love <fx@gnu.org>1999-09-13 13:03:05 +0000
commit70647e337e404182d45ed4d29e179773fcadf9be (patch)
treebfef555842b5b4d6688fa87e1e29243a26c6e4ac /lisp/custom.el
parentb86bd3dd37e63d13ba3657f5e9dd084d04a254e5 (diff)
downloademacs-70647e337e404182d45ed4d29e179773fcadf9be.tar.gz
Don't define-widget-keywords.
Change from Didier Verna: (custom-set-variables): the arguments can now have a custom comment as fifth element.
Diffstat (limited to 'lisp/custom.el')
-rw-r--r--lisp/custom.el61
1 files changed, 30 insertions, 31 deletions
diff --git a/lisp/custom.el b/lisp/custom.el
index 1f510c3d85d..e07aea2c953 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -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 @@ The value is either the value in the symbol's `saved-value' property,
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 @@ The value is either the symbol's current value
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 @@ 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 the
not using the standard setting.
For the standard setting, use the `set-default'."
(cond ((default-boundp symbol)
@@ -116,13 +109,13 @@ not the default value itself."
(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 @@ Neither SYMBOL nor VALUE needs to be quoted.
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 @@ information."
(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 @@ Useful widgets are `custom-variable' for editing variables,
The remaining arguments should have the form
- [KEYWORD VALUE]...
+ [KEYWORD VALUE]...
The following KEYWORD's are defined:
@@ -329,7 +322,7 @@ If there already is an entry for that option, overwrite it."
(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 @@ Third argument TYPE is the custom option type."
(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 @@ in every Customization buffer.")
(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 @@ the default value for the SYMBOL."
;; 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 @@ this sets the local binding in that buffer instead."
(provide 'custom)
-;; custom.el ends here
+;;; custom.el ends here