anchor.diff:              (listener-reset-prompt)
               (return-from listener-return t))
             (let ((str (points-to-string start point)))
  -            (lem.history:add-history (%listener-history) str)
  +            (lem.history:add-history (current-listener-history) str)
               (buffer-end point)
               (insert-character point #\newline)
               (listener-update-point)
  
positive.code:     (buffer-end (current-point))))
  
  (define-command listener-prev-input () ()
    (%backup-edit-string (%listener-history))
    (multiple-value-bind (str win)
        (lem.history:prev-history (%listener-history))
      (when win
        (replace-textarea str))))
  
  (define-command listener-next-input () ()
    (%backup-edit-string (%listener-history))
    (%restore-edit-string (%listener-history))
    (multiple-value-bind (str win)
        (lem.history:next-history (%listener-history))
      (when win
        (replace-textarea str))))
  
  (define-command listener-previous-matching-input (regexp)
      ((prompt-for-string "Previous element matching (regexp): "))
    (%backup-edit-string (%listener-history))
    (multiple-value-bind (str win)
        (lem.history:previous-matching (%listener-history) regexp)
      (when win
        (replace-textarea str))))
  
  
negative.code: (define-key *listener-mode-keymap* "M-r" 'listener-previous-matching-input)
  (define-key *listener-mode-keymap* "C-c M-o" 'listener-clear-buffer)
  (define-key *listener-mode-keymap* "C-c C-u" 'listener-clear-input)
  
  (defun current-listener-history ()
    (let ((listener (variable-value 'listener-store :buffer (current-buffer))))
      (listener-history listener)))
  
  (defun listener-start-point (buffer)
    (%listener-point buffer))
  