anchor.diff:  (defhandler :map-request (parent send-event-p window)
     (format t "~&map-request: ~a ~a ~a~%" parent send-event-p window)
     (restart-case (map-window (plus window))
  -    (window-error ()
  -      (format t "~&ZZZ ~a~%" window)
  -      'mmkay)))
  +    (window-error (c)
  +      (format t "~&map-request: ~a ~a~%" c window)
  +      'processed)
  +    (value-error (c)
  +      (format t "~&map-request: ~a ~a~%" c window)
  +      'processed)))
   
   (defhandler :configure-request (stack-mode window x y width height border-width value-mask)
     (let ((list-mask (loop for i below 4
  
positive.code:   (focus *curr*)
  
    (unwind-protect (handler-bind ((window-error #'restart-window-error)
                                   (simple-error #'restart-simple-error))
                      (evloop))
      (ungrab-all)
  
negative.code:                                    (3 (list :height height))))))
      (format t "~&configure-request: ~a ~a ~s~%" window value-mask list-mask)
      (restart-case (when list-mask (apply #'move window list-mask))
        (window-error (c)
          (format t "~&configure-request: ~a ~a~%" c window)
          'processed)
        (value-error (c)
          (format t "~&configure-request: ~a ~a~%" c window)
          'processed))))
  
  ;; Restart functions
  (defmacro defrestart (name)
    (let ((fname (intern (concatenate 'string "RESTART-" (symbol-name name)))))
      (with-gensyms (c restart)
        `(defun ,fname (,c)
           (let ((,restart (find-restart ',name)))
             (when ,restart
               (invoke-restart ,restart ,c)))))))
  
  (defrestart window-error)
  (defrestart simple-error)
  (defrestart value-error)
  
  (defun evloop ()
    (do () ((eql (process-event *display* :handler *handlers* :discard-p t) 'quit))))
  