anchor.diff:      (loop
          (dispatch-event *editor* (mezzanine.supervisor:fifo-pop (fifo *editor*))))))
   
  -(defun input-waiting ()
  -  (when (pending-event *editor*)
  -    (return-from input-waiting t))
  -  (let ((event (mezzanine.supervisor:fifo-pop (fifo *editor*) nil)))
  -    (when event
  -      (setf (pending-event *editor*) event)
  -      (return-from input-waiting t))
  -    nil))
  +(define-condition pending-input () ())
  +
  +(defun check-pending-input ()
  +  (cond ((pending-event *editor*)
  +         (signal 'pending-input))
  +        (t (let ((event (mezzanine.supervisor:fifo-pop (fifo *editor*) nil)))
  +             (when event
  +               (setf (pending-event *editor*) event)
  +               (signal 'pending-input))))))
   
   (defgeneric line-length (line))
   
  
positive.code:            (replace (data current-line) (data current-line)
                      :start1 (1+ (point-offset *editor*))
                      :start2 (point-offset *editor*))
             (setf (aref (data current-line) (point-offset *editor*)) ch))))
    (forward-char))
  
  (defun kill-line ()
  
negative.code:     (cond ((next current-line)
             (setf (prev (next current-line)) new-line))
            (t (setf (last-line *editor*) new-line)))
      (incf (version current-line))
      (setf (next current-line) new-line
            (fill-pointer (data current-line)) (point-offset *editor*))
      (setf (point-line *editor*) new-line
  