anchor.diff:  
   (define-command isearch-finish () ()
     (setf (buffer-value (current-buffer) 'isearch-redisplay-string) *isearch-string*)
  -  (setq *isearch-prev-string* *isearch-string*)
  +  (change-previous-string *isearch-string*)
     (isearch-add-hooks)
     (isearch-redisplay-inactive (current-buffer))
     (isearch-mode nil))
  
positive.code: (define-command isearch-prev () ()
    (when (boundp '*isearch-string*)
      (when (string= "" *isearch-string*)
        (setq *isearch-string* *isearch-prev-string*))
      (setf (variable-value 'isearch-next-last :buffer) nil)
      (cond ((variable-value 'isearch-prev-last :buffer)
             (setf (variable-value 'isearch-prev-last :buffer) nil)
  
negative.code:                                       :undef-hook 'isearch-self-insert))
  (defvar *isearch-prompt*)
  (defvar *isearch-string*)
  (defvar *isearch-previous-string* nil)
  (defvar *isearch-start-point*)
  (defvar *isearch-search-function*)
  (defvar *isearch-search-forward-function*)
  