# HG changeset patch # User Dave Love # Date 937227785 0 # Node ID d1179efb4e878afe02427aeb5509034fa345e37f # Parent f8543a6d88ca893906f8eba1186eb8264bc6351b Don't define-widget-keywords. Change from Didier Verna: (custom-set-variables): the arguments can now have a custom comment as fifth element. diff -r f8543a6d88ca -r d1179efb4e87 lisp/custom.el --- 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 ;; 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