1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

Pre-expand lexical-let, since otherwise it requires cl to be loaded

Fixes https://github.com/jwiegley/use-package/issues/571
This commit is contained in:
John Wiegley 2017-12-06 16:56:25 -08:00
parent 71fc224961
commit 7cc17cee8f
2 changed files with 16 additions and 18 deletions

View file

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