diff options
Diffstat (limited to 'lisp/use-package/use-package-core.el')
-rw-r--r-- | lisp/use-package/use-package-core.el | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lisp/use-package/use-package-core.el b/lisp/use-package/use-package-core.el index 517671b87f1..81d45c03b2b 100644 --- a/lisp/use-package/use-package-core.el +++ b/lisp/use-package/use-package-core.el @@ -671,14 +671,14 @@ 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-gentemp "use-package--loaded")) + (result (cl-gentemp "use-package--result")) + (next (cl-gentemp "use-package--next"))) + `((defvar ,loaded nil) + (defvar ,result nil) + (defvar ,next #'(lambda () (if ,loaded ,result + (setq ,loaded t ,result ,arg)))) + ,@(funcall f `((funcall ,next)))))) (defsubst use-package-normalize-value (label arg) "Normalize the Lisp value given by ARG. |