Some macros that take a "body" argument expand into a call to an advertised function that takes a functional argument. This functional argument will execute the suppled body. For a macro named "with-environment", the function is generally named "invoke-with-environment". For example, with-drawing-options might be defined as follows: [annotate]
(defgeneric invoke-with-drawing-options (medium continuation &key) (declare (dynamic-extent continuation))) (defmacro with-drawing-options ((medium &rest drawing-options) &body body) `(flet ((with-drawing-options-body (,medium) ,@body)) (declare (dynamic-extent #'with-drawing-options-body)) (invoke-with-drawing-options ,medium #'with-drawing-options-body ,@drawing-options))) (defmethod invoke-with-drawing-options ((medium clx-display-medium) continuation &rest drawing-options) (with-drawing-options-merged-into-medium (medium drawing-options) (funcall continuation medium)))