From: John Wiegley Date: Sun, 3 Dec 2017 18:33:12 +0000 (-0800) Subject: Define macroexpand-1 for older Emacsen X-Git-Tag: emacs-29.0.90~1306^2~15^2~188 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4c1b82aed5;p=emacs.git Define macroexpand-1 for older Emacsen --- 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))