anchor.diff:      (move-mark-to-mark (buffer-mark buffer) (buffer-point buffer))
       (move-mark-to-mark (buffer-point buffer) saved)
       (setf (buffer-mark-active buffer) t)))
  +
  +;;; Minibuffer stuff.
  +
  +(defun fix-minibuffer-point-position-hook ()
  +  (when (mark< (buffer-point *minibuffer*)
  +               (buffer-property *minibuffer* 'minibuffer-prompt-end))
  +    (point-to-mark *minibuffer*
  +                   (buffer-property *minibuffer* 'minibuffer-prompt-end)))
  +  (when (mark< (buffer-mark *minibuffer*)
  +               (buffer-property *minibuffer* 'minibuffer-prompt-end))
  +    (move-mark-to-mark (buffer-mark *minibuffer*)
  +                       (buffer-property *minibuffer* 'minibuffer-prompt-end))))
  +
  +(defun minibuffer-finish-input-command ()
  +  (move-end-of-buffer *minibuffer*)
  +  (throw 'minibuffer-result
  +    (buffer-string *minibuffer*
  +                   (buffer-property *minibuffer* 'minibuffer-prompt-end)
  +                   (buffer-point *minibuffer*))))
  +
  +(defun read-from-minibuffer (prompt)
  +  "Read a string from the minibuffer."
  +  (let ((old-key-map (global-key-map *editor*))
  +        (old-buffer (current-buffer *editor*))
  +        (old-post-command-hooks (post-command-hooks *editor*)))
  +    (when (eql old-buffer *minibuffer*)
  +      (error "Recursive minibuffer read!"))
  +    (unwind-protect
  +         (progn
  +           (setf *minibuffer* (make-instance 'buffer))
  +           (setf (global-key-map *editor*) *minibuffer-key-map*
  +                 (buffer-property *minibuffer* 'name) "*Minibuffer*")
  +           (push 'fix-minibuffer-point-position-hook (post-command-hooks *editor*))
  +           (switch-to-buffer *minibuffer*)
  +           (insert *minibuffer* prompt)
  +           (setf (buffer-property *minibuffer* 'minibuffer-prompt-end) (copy-mark (buffer-point *minibuffer*) :left))
  +           (catch 'minibuffer-result
  +             (editor-loop)))
  +      (switch-to-buffer old-buffer)
  +      (setf (global-key-map *editor*) old-key-map
  +            (post-command-hooks *editor*) old-post-command-hooks))))
   
   ;;; Redisplay.
   
  
positive.code: (defun move-end-of-line (buffer)
    (let ((point (buffer-point buffer)))
      (setf (mark-charpos point) (line-length (mark-line point))))
    (values))
  
  (defun move-mark (mark &optional (n 1))
  
negative.code: (defvar *this-command*)
  (defvar *last-character*)
  (defvar *this-character*)
  (defvar *minibuffer*)
  (defvar *minibuffer-key-map*)
  
  (defvar *editor*)
  
  (defgeneric dispatch-event (editor event)
  