anchor.diff:     (x :initform 0 :initarg :x-position)
      (y :initform 0 :initarg :y-position)
      (width :initform 8)
  -   (visibility :initform nil
  -	       :accessor cursor-visibility)))
  +   (cursor-active :initform T  ;; XXX what does "cursor is active" mean?                  
  +                  :accessor cursor-active)
  +   (cursor-state :initform nil
  +                 :accessor cursor-state)))
   
   (defgeneric cursor-height (cursor))
   
  
positive.code:                                    region)
    (declare (ignorable region))
    (let ((cursor (stream-text-cursor stream)))
      (if (cursor-visibility cursor)
  	(progn
  	  ;; Erase the cursor so that the subsequent flip operation will make a
  	  ;; cursor, whether or not the next-method erases the location of the
  
negative.code: 				(+ x width) (+ y height)
  				:filled t
  				:ink +foreground-ink+
  				))       
          (:erase
                 ;; This is how I'd like this to work, as painting over with the background
                 ;; ink is repugnant. I leave this disabled because I'm concerned about
                 ;; infinite recursion if replay-output-record calls here (which Goatee
                 ;; does currently).  --Hefner
                  #+nil (repaint-sheet (cursor-sheet cursor)
                                       (make-bounding-rectangle x y (+ 1 x width)
                                                                (+ 1 y height)))
                  (draw-rectangle* (sheet-medium (cursor-sheet cursor))
                                   x y
                                   (+ x width) (+ y height)
                                   :filled t
                                   :ink +background-ink+))))))
  
  ;;; Standard-Text-Cursor class
  
  