anchor.diff:        (invalidate-all-strokes view :modified t))))
   
   (defun adjust-pane (drei-pane)
  -  "Adjust the bottom and top marks of the pane to be correct, and
  -reposition the pane if point is outside the visible area."
  +  "Reposition the pane if point is outside the region delimited
  +by the top/bot marks of its view. Returns true if adjustment was
  +needed."
     (with-accessors ((buffer buffer) (top top) (bot bot)
                      (point point)) (view drei-pane)
  -    (beginning-of-line top)
       (when (or (mark< point top)
                 (mark> point bot))
  -      (reposition-pane drei-pane))))
  +      (reposition-pane drei-pane)
  +      t)))
   
   (defun page-down (view)
     (with-accessors ((top top) (bot bot)) view
  
positive.code: (defun display-drei-pane (frame drei-pane)
    "Display `pane'. If `pane' has focus, `current-p' should be
  non-NIL."
    (declare (ignore frame))
    (let ((view (view drei-pane)))
      (with-accessors ((buffer buffer)) view
        (when (typep view 'point-mark-view)
          (if (full-redisplay-p view)
              (fully-redisplay-pane drei-pane view)
              (adjust-pane drei-pane)))
        (setf (stream-cursor-position drei-pane) (values 0 0))
        (display-drei-view-contents drei-pane view)
        ;; Point must be on top of all other cursors.
        (dolist (cursor (cursors drei-pane))
          (display-drei-view-cursor drei-pane view cursor))
        (fix-pane-viewport drei-pane (view drei-pane)))))
  
  (defgeneric full-redisplay (pane)
    (:documentation "Queue a full redisplay for `pane'."))
  
negative.code: 
  (defmethod fully-redisplay-pane ((drei-pane drei-pane)
                                   (view point-mark-view))
    (reposition-pane drei-pane))
  
  (defmethod fully-redisplay-pane :after ((drei-pane drei-pane)
                                          (view drei-buffer-view))
  