anchor.diff:        (setf (mark-line top-line-mark) (display-line-line new-top-line))
               (mark-charpos top-line-mark) (display-line-start new-top-line))))
   
  +(defun minibuffer-rows ()
  +  (if (eql (current-buffer *editor*) *minibuffer*)
  +    (1+ (truncate (line-number (last-line *minibuffer*)) 10000))
  +    1))
  +
  +(defvar *mode-line-buffer* (make-instance 'buffer))
   (defun render-mode-line ()
  -  (let* ((buffer (current-buffer *editor*))
  -         (minibuffer-rows (if (eql buffer *minibuffer*)
  -                            (1+ (truncate (line-number (last-line buffer)) 10000))
  -                            1))
  -         (modeline-buffer (get-buffer-create " *Modeline*"))
  -         (modeline-string (buffer-property buffer 'modeline)))
  -    (insert modeline-buffer
  +  (let* ((buffer (current-buffer *editor*)))
  +    (insert *mode-line-buffer*
         (format nil " [~A] ~A L~S C~S    (~A)" 
            (if (buffer-modified buffer) "*" " ")
            (buffer-property buffer 'name)
  
positive.code:          ;;(buffer-current-package buffer)
           *package* ; TODO: uncomment above when buffer-current-package is faster
           ))
      (render-display-line (first-line modeline-buffer)
         (lambda (l) (blit-display-line l (- (window-rows) (1- minibuffer-rows)))) t)
      (kill-buffer modeline-buffer)))
  
  (defun redisplay ()
    "Perform an incremental redisplay cycle.
  
negative.code:       (mezzano.gui.compositor:damage-window (window *editor*)
                                              left real-y
                                              win-width line-height))))
  
  (defun recenter (buffer)
    "Move BUFFER's top line so that the point is displayed."
  