anchor.diff:  (defgeneric compute-popup-window-position (gravity source-window width height))
   
   (defclass gravity (cl-singleton-mixin:singleton-class) ())
  +(defclass gravity-top (gravity) ())
   (defclass gravity-topright (gravity) ())
   (defclass gravity-cursor (gravity) ())
   (defclass gravity-follow-cursor (gravity-cursor) ())
  
positive.code:   (if (typep gravity 'gravity)
        gravity
        (ecase gravity
          (:topright (make-instance 'gravity-topright))
          (:cursor (make-instance 'gravity-cursor))
          (:follow-cursor (make-instance 'gravity-follow-cursor)))))
  
negative.code:       (setf w (min width disp-w)))
      (values x y w h)))
  
  (defmethod compute-popup-window-position ((gravity gravity-top) source-window width height)
    (let* ((x (- (floor (display-width) 2)
                        (floor width 2)))
           (y (+ (window-y source-window) 1)))
      (values x y width height)))
  
  (defmethod compute-popup-window-position ((gravity gravity-topright) source-window width height)
    (let* ((b2 (* +border-size+ 2))
           (win-x (window-x source-window))
  