summaryrefslogtreecommitdiff
path: root/lisp/custom.el
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2015-10-25 00:29:42 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2015-10-25 00:30:16 -0700
commit0afbc5b2a2cda9fe12246bf62567162ae2577160 (patch)
treeaaf0330eae424e8fd40a7bd559de9960ef8bf460 /lisp/custom.el
parentd8589ad4e3cf2ed6759836f28081d96748360915 (diff)
downloademacs-0afbc5b2a2cda9fe12246bf62567162ae2577160.tar.gz
Revert commit that broke 'make bootstrap'
* lisp/custom.el (custom-declare-variable): Revert commit 79fac080d277fed07b3c192890ad59d36d9f83b6. custom.el needs to work even when pcase has not been defined yet, when doing bootstrapping.
Diffstat (limited to 'lisp/custom.el')
-rw-r--r--lisp/custom.el57
1 files changed, 34 insertions, 23 deletions
diff --git a/lisp/custom.el b/lisp/custom.el
index cc284ef51ce..c5d0e65f42b 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -155,29 +155,40 @@ set to nil, as the value is no longer rogue."
(unless (memq :group args)
(custom-add-to-group (custom-current-group) symbol 'custom-variable))
(while args
- (let ((keyword (pop args)))
- (unless (symbolp keyword)
- (error "Junk in args %S" (cons keyword args)))
- (unless args
- (error "Keyword %s is missing an argument" keyword))
- (let ((value (pop args)))
- (pcase keyword
- (`:initialize (setq initialize value))
- (`:set (put symbol 'custom-set value))
- (`:get (put symbol 'custom-get value))
- (`:require (push value requests))
- (`:risky (put symbol 'risky-local-variable value))
- (`:safe (put symbol 'safe-local-variable value))
- (`:type (put symbol 'custom-type (purecopy value)))
- (`:options (if (get symbol 'custom-options)
- ;; Slow safe code to avoid duplicates.
- (mapc (lambda (option)
- (custom-add-option symbol option))
- value)
- ;; Fast code for the common case.
- (put symbol 'custom-options (copy-sequence value))))
- (_ (custom-handle-keyword symbol keyword value
- 'custom-variable))))))
+ (let ((arg (car args)))
+ (setq args (cdr args))
+ (unless (symbolp arg)
+ (error "Junk in args %S" args))
+ (let ((keyword arg)
+ (value (car args)))
+ (unless args
+ (error "Keyword %s is missing an argument" keyword))
+ (setq args (cdr args))
+ (cond ((eq keyword :initialize)
+ (setq initialize value))
+ ((eq keyword :set)
+ (put symbol 'custom-set value))
+ ((eq keyword :get)
+ (put symbol 'custom-get value))
+ ((eq keyword :require)
+ (push value requests))
+ ((eq keyword :risky)
+ (put symbol 'risky-local-variable value))
+ ((eq keyword :safe)
+ (put symbol 'safe-local-variable value))
+ ((eq keyword :type)
+ (put symbol 'custom-type (purecopy value)))
+ ((eq keyword :options)
+ (if (get symbol 'custom-options)
+ ;; Slow safe code to avoid duplicates.
+ (mapc (lambda (option)
+ (custom-add-option symbol option))
+ value)
+ ;; Fast code for the common case.
+ (put symbol 'custom-options (copy-sequence value))))
+ (t
+ (custom-handle-keyword symbol keyword value
+ 'custom-variable))))))
(put symbol 'custom-requests requests)
;; Do the actual initialization.
(unless custom-dont-initialize