anchor.diff:      `(let ((,quit nil)
              (,idle-func nil))
          (with-sdl-event (,sdl-event)
  -         (setf ,idle-func ,(sdl2::expand-idle-handler event-handlers))
  +         (setf ,idle-func #'(lambda () ,@(expand-idle-handler event-handlers)))
            (loop until ,quit
               do (loop until (= 0 ,(sdl2::next-event sdl-event method timeout))
                     do (case (get-event-type ,sdl-event)
  
positive.code:                                                               params
                                                                forms
                                                                event-data)))))
                                    event-handlers)))))
           (unless ,quit
             (when ,idle-func
               (funcall ,idle-func)))))))
  
  ;;; The following three functions shouldn't be used in a real
  ;;; game loop. They are simply here for easier testing and
  
negative.code:     (otherwise (error "Event method must be :poll :wait or :wait-with-timeout"))))
  
  (defun expand-idle-handler (event-handlers)
    (remove nil (mapcar #'(lambda (handler)
                            (cond ((eq (first handler) :idle)
                                   `(progn ,@(rest (rest handler))))))
                        event-handlers)))
  
  (defun expand-quit-handler (sdl-event forms quit)
    (declare (ignore sdl-event))
  