summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2017-12-06 16:56:25 -0800
committerJohn Wiegley <johnw@newartisans.com>2017-12-06 16:56:25 -0800
commit7cc17cee8f8ae2093d98efebf429cd10e9b0b81c (patch)
tree5727d79fd5bb3cace6e465e36ab5875aabbec4b9 /lisp
parent71fc224961510a56baff2e4686ccca484824f58d (diff)
downloademacs-7cc17cee8f8ae2093d98efebf429cd10e9b0b81c.tar.gz
emacs-7cc17cee8f8ae2093d98efebf429cd10e9b0b81c.tar.bz2
emacs-7cc17cee8f8ae2093d98efebf429cd10e9b0b81c.zip
Pre-expand lexical-let, since otherwise it requires cl to be loaded
Fixes https://github.com/jwiegley/use-package/issues/571
Diffstat (limited to 'lisp')
-rw-r--r--lisp/use-package/use-package-core.el19
1 files changed, 11 insertions, 8 deletions
diff --git a/lisp/use-package/use-package-core.el b/lisp/use-package/use-package-core.el
index 517671b87f1..d2910ed5686 100644
--- a/lisp/use-package/use-package-core.el
+++ b/lisp/use-package/use-package-core.el
@@ -671,14 +671,17 @@ If ALLOW-EMPTY is non-nil, it's OK for ARGS to be an empty list."
(defun use-package-memoize (f arg)
"Ensure the macro-expansion of F applied to ARG evaluates ARG
no more than once."
- (let ((loaded (cl-gensym "use-package--loaded"))
- (result (cl-gensym "use-package--result"))
- (next (cl-gensym "use-package--next")))
- `((lexical-let (,loaded ,result)
- ,@(funcall f `((if ,loaded
- ,result
- (setq ,loaded t)
- (setq ,result ,arg))))))))
+ (let* ((loaded (cl-gensym "use-package--loaded"))
+ (result (cl-gensym "use-package--result"))
+ (next (cl-gensym "use-package--next"))
+ (body `(lexical-let (,loaded ,result)
+ ,@(funcall f `((if ,loaded
+ ,result
+ (setq ,loaded t)
+ (setq ,result ,arg)))))))
+ `(,(if (eq use-package-verbose 'errors)
+ body
+ (macroexpand body)))))
(defsubst use-package-normalize-value (label arg)
"Normalize the Lisp value given by ARG.