From 4c1b82aed582271d2159a3ae280ff79c272f6a46 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sun, 3 Dec 2017 10:33:12 -0800 Subject: [PATCH] Define macroexpand-1 for older Emacsen --- test/lisp/use-package/use-package-tests.el | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/lisp/use-package/use-package-tests.el b/test/lisp/use-package/use-package-tests.el index 5cf7a342b36..fc9c0f184b6 100644 --- a/test/lisp/use-package/use-package-tests.el +++ b/test/lisp/use-package/use-package-tests.el @@ -31,6 +31,31 @@ max-lisp-eval-depth 8000 max-specpdl-size 8000) +(unless (fboundp 'macroexpand-1) + (defun macroexpand-1 (form &optional environment) + "Perform (at most) one step of macroexpansion." + (cond + ((consp form) + (let* ((head (car form)) + (env-expander (assq head environment))) + (if env-expander + (if (cdr env-expander) + (apply (cdr env-expander) (cdr form)) + form) + (if (not (and (symbolp head) (fboundp head))) + form + (let ((def (autoload-do-load (symbol-function head) head 'macro))) + (cond + ;; Follow alias, but only for macros, otherwise we may end up + ;; skipping an important compiler-macro (e.g. cl--block-wrapper). + ((and (symbolp def) (macrop def)) (cons def (cdr form))) + ((not (consp def)) form) + (t + (if (eq 'macro (car def)) + (apply (cdr def) (cdr form)) + form)))))))) + (t form)))) + (defmacro expand-minimally (form) `(let ((use-package-verbose 'errors) (use-package-expand-minimally t)) -- 2.39.2