2010-12-03 Katsumi Yamaoka <yamaoka@jpl.org>
- * gnus-util.el (gnus-macroexpand-all): Don't modify argument.
+ * gnus-util.el (gnus-macroexpand-all): Don't modify argument;
+ allow optional argument `environment'.
2010-12-03 Glenn Morris <rgm@gnu.org>
(if (fboundp 'macroexpand-all)
(defalias 'gnus-macroexpand-all 'macroexpand-all)
- (defun gnus-macroexpand-all (form)
+ (defun gnus-macroexpand-all (form &optional environment)
"Return result of expanding macros at all levels in FORM.
-If no macros are expanded, FORM is returned unchanged."
+If no macros are expanded, FORM is returned unchanged.
+The second optional arg ENVIRONMENT specifies an environment of macro
+definitions to shadow the loaded ones for use in file byte-compilation."
(if (consp form)
(let ((idx 1)
(len (length (setq form (copy-sequence form))))
(while (< idx len)
(setcar (nthcdr idx form) (gnus-macroexpand-all (nth idx form)))
(setq idx (1+ idx)))
- (if (eq (setq expanded (macroexpand form)) form)
+ (if (eq (setq expanded (macroexpand form environment)) form)
form
(gnus-macroexpand-all expanded)))
form)))