Надеюсь, это поможет вам с синтаксисом: вызов функции свопа вызывает foo1, но выполняет foo2.
Вы можете написать это как полезный макрос с функцией замены, который связывает старую функцию с новой функцией.во время исполнения тела вы проходите внутрь.
(defun foo1()
(insert "hi foo1"))
(defun foo2()
(insert "hi foo2"))
(defun swap-function(old new)
(let ((save-func (symbol-function old)))
(fset old (symbol-function new))
(funcall old)
(fset old save-func)))
(swap-function #'foo1 #'foo2)