Как и в обычных функциях, используйте &rest
, чтобы собрать все оставшиеся аргументы в список.
(defmacro set_name (name &rest list)
`(setq ,name ',list))
(set_name occupation I am a doctor)
(print occupation)
Это выведет (I AM A DOCTOR)
Вам нужно указать ,list
в расширении, поэтому он не будет пытаться оценить все символы как переменные.