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:
parent
b86bd3dd37
commit
70647e337e
1 changed files with 30 additions and 31 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue