Don't define-widget-keywords.

Change from Didier Verna:
(custom-set-variables): the arguments can now have a
custom comment as fifth element.
This commit is contained in:
Dave Love 1999-09-13 13:03:05 +00:00
parent b86bd3dd37
commit 70647e337e

View file

@ -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