The macro that forces given user macros to expand first (requires clojure.walk):
(defmacro expand-first [the-set & code]
`(do ~@(prewalk
#(if (and (list? %) (contains? the-set (first %)))
(macroexpand-all %)
%) code)))
Who has ideas how to make it better?