anchor.diff:            (insert-string p string)))
         (isearch-reset-buffer))))
   
  +(define-command isearch-next-highlight (n) ("p")
  +  (when *isearch-highlight-overlays*
  +    (when (< n 0) (isearch-prev-highlight (- n)))
  +    (dotimes (_ n)
  +      (let ((p (current-point))
  +            (best))
  +        (dolist (overlay *isearch-highlight-overlays*)
  +          (when (and (point< p (overlay-start overlay))
  +                     (or (null best) (point< (overlay-start overlay) best)))
  +            (setf best (overlay-start overlay))))
  +        (when best
  +          (move-point p best))))))
  +
  +(define-command isearch-prev-highlight (n) ("p")
  +  (when *isearch-highlight-overlays*
  +    (when (< n 0) (isearch-next-highlight (- n)))
  +    (dotimes (_ n)
  +      (let ((p (current-point))
  +            (best))
  +        (dolist (overlay *isearch-highlight-overlays*)
  +          (when (and (point< (overlay-start overlay) p)
  +                     (or (null best) (point< best (overlay-start overlay))))
  +            (setf best (overlay-start overlay))))
  +        (when best
  +          (move-point p best))))))
  +
    
   (defvar *replace-before-string* nil)
  
positive.code: (define-key *isearch-keymap* "C-r" 'isearch-prev)
  (define-key *isearch-keymap* "C-y" 'isearch-yank)
  (define-key *global-keymap* "M-r" 'isearch-replace-highlight)
  
  (defun isearch-update-display ()
    (isearch-update-minibuffer)
  
negative.code:   (setq *isearch-prompt* prompt)
    (setq *isearch-string* initial-string)
    (setq *isearch-search-function* search-func)
    (setq *isearch-start-point* (copy-point (current-point) :temporary))
    (setq *isearch-search-forward-function* search-forward-function)
    (setq *isearch-search-backward-function* search-backward-function)
  