abbrevってわざわざ展開する必要があるんでしょうか。
abbrev展開しない方が見やすいんじゃないかとかねがね思っていました。
(defmacro abbr (((abbr long-expression &rest nsubst-conditions) &rest more-args) &body body) (dolist (args (list* (list abbr long-expression) more-args)) (setq body (apply 'nsubst (cadr args) (car args) body (cddr args)))) `(progn ,@body)) (abbr ((h hogehoge) (f foobar)) '(h f)) | (hogehoge foobar) (abbr ((h (list 1 2 3)) ((f & b) foobar :test equal)) ; マクロだからtest関数はquoteしない '(h (f & b))) | ((list 1 2 3) foobar)