マクロ 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