summaryrefslogtreecommitdiff
path: root/test/lisp/use-package/use-package-tests.el
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2017-12-03 10:33:12 -0800
committerJohn Wiegley <johnw@newartisans.com>2017-12-03 10:33:12 -0800
commit4c1b82aed582271d2159a3ae280ff79c272f6a46 (patch)
treed18c6e9c30e4d1a57caa6241838dfeeb9777203c /test/lisp/use-package/use-package-tests.el
parent9ab797cccdcb8bd583c0e3148e1aeb251bf05fec (diff)
downloademacs-4c1b82aed582271d2159a3ae280ff79c272f6a46.tar.gz
emacs-4c1b82aed582271d2159a3ae280ff79c272f6a46.tar.bz2
emacs-4c1b82aed582271d2159a3ae280ff79c272f6a46.zip
Define macroexpand-1 for older Emacsen
Diffstat (limited to 'test/lisp/use-package/use-package-tests.el')
-rw-r--r--test/lisp/use-package/use-package-tests.el25
1 files changed, 25 insertions, 0 deletions
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))