anchor.diff:  (defun page-up (view)
     (with-accessors ((top top) (bot bot)) view
       (when (> (offset top) 0)
  -      (let ((nb-lines-in-region (number-of-lines-in-region top bot)))
  -        (setf (offset bot) (offset top))
  -        (end-of-line bot)
  -        (loop repeat nb-lines-in-region
  -           while (> (offset top) 0)
  -           do (decf (offset top))
  -           (beginning-of-line top))
  -        (setf (offset (point view)) (offset bot))
  -        (beginning-of-line (point view))
  -        (invalidate-all-strokes view)))))
  +      (setf (offset (point view)) (offset top))
  +      (backward-object (point view))
  +      (beginning-of-line (point view)))))
   
   (defgeneric fix-pane-viewport (pane view)
     (:documentation "Fix the size and scrolling of `pane', which
  
positive.code: ;;;
  ;;; Drei pane redisplay.
  
  (defun nb-lines-in-pane (pane)
    (let* ((medium (sheet-medium pane))
  	 (style (medium-text-style medium))
  	 (height (text-style-height style medium)))
      (multiple-value-bind (x y w h) (bounding-rectangle* pane)
        (declare (ignore x y w))
        (max 1 (floor h (+ height (stream-vertical-spacing pane)))))))
  
  (defun adjust-pane-bot (drei-pane)
    "Make the region on display fit the size of the pane as closely
  as possible by adjusting bot leaving top intact."
    (let* ((nb-lines-in-pane (nb-lines-in-pane drei-pane))
           (view (view drei-pane)))
      (with-accessors ((top top) (bot bot)) view
        (setf (offset bot) (offset top))
        (end-of-line bot)
        (loop until (end-of-buffer-p bot)
           repeat (1- nb-lines-in-pane)
           do (forward-object bot)
           (end-of-line bot)))))
  
  (defun reposition-pane (drei-pane)
    "Try to put point close to the middle of the pane by moving top
  half a pane-size up."
    (let ((nb-lines-in-pane (nb-lines-in-pane drei-pane))
          (view (view drei-pane)))
      (with-accessors ((top top) (point point)) view
        (setf (offset top) (offset point))
        (beginning-of-line top)
        #+nil(loop do (beginning-of-line top)
           repeat (floor nb-lines-in-pane 2)
           until (beginning-of-buffer-p top)
           do (decf (offset top))
  
negative.code: reposition the pane if point is outside the visible area."
    (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))))
  
  (defun page-down (view)
    (with-accessors ((top top) (bot bot)) view
  