マクロ ad-set-arg, ad-set-args
(defun foo (x y &optional z &rest r) (insert (format "%S\n" x)) (insert (format "%S\n" y)) (insert (format "%S\n" z)) (insert (format "%S\n" r))) => foo (defadvice foo (before foo-before activate) (ad-set-arg 1 10) (ad-set-arg 2 20) (ad-set-arg 3 30) (ad-set-arg 4 40)) => foo (foo 0 1 2 3 4 5 6) => 0 10 20 (30 40 5 6) nil (defadvice foo (before foo-before activate) (ad-set-args 0 '(5 4 3 2 1 0))) => foo (foo 0 1 2 3 4 5 6) => 5 4 3 (2 1 0) nil