anchor.diff:      (insert-string cur-point
   		   (princ-to-string
   		    (funcall
  -		     (get-bvar :listener-get-prompt-function)))
  +		     (get-bvar :listener-get-prompt-function :buffer buffer)))
   		   :attribute *prompt-attribute*
   		   :read-only t
   		   :field t)
       (buffer-end cur-point)
       (buffer-undo-boundary buffer)
  -    (listener-update-point)))
  +    (listener-update-point cur-point)))
   
   (define-key *listener-mode-keymap* (kbd "C-m") 'listener-return)
   (define-command listener-return () ()
     (with-point ((point (buffer-end (current-point)) :left-inserting))
       (if (not (funcall (get-bvar :listener-check-confirm-function) point))
           (insert-character point #\newline)
  -        (let ((start (listener-start-point)))
  +        (let ((start (listener-start-point (current-buffer))))
             (unless (point< start point)
               (listener-reset-prompt)
               (return-from listener-return t))
  
positive.code:     (listener-reset-prompt buffer)))
  
  (defun listener-update-point (&optional (point (current-point)))
    (when (%listener-point)
      (delete-point (%listener-point)))
    (setf (%listener-point)
          (if point
              (copy-point point :right-inserting)
              (copy-point (current-point) :right-inserting))))
  
negative.code: 
  (define-key *listener-mode-keymap* (kbd "C-c C-u") 'listener-clear-input)
  (define-command listener-clear-input () ()
    (delete-between-points (listener-start-point (current-buffer))
  			 (buffers-end (current-buffer))))
  