anchor.diff:  (defun disable-hook ()
     (setf (variable-value 'isearch-next-last :buffer) nil)
     (setf (variable-value 'isearch-prev-last :buffer) nil))
  +
  ++
  +(defun isearch-default-string ()
  +  (unless *isearch-previous-string*
  +    (setf *isearch-previous-string* (config :isearch-previous-string "")))
  +  *isearch-previous-string*)
  +
  +(defun change-previous-string (string)
  +  (setf (config :isearch-previous-string) string
  +        *isearch-previous-string* string))
   
    
  
positive.code: (define-command isearch-next () ()
    (when (boundp '*isearch-string*)
      (when (string= "" *isearch-string*)
        (setq *isearch-string* *isearch-prev-string*))
      (setf (variable-value 'isearch-prev-last :buffer) nil)
      (cond ((variable-value 'isearch-next-last :buffer)
             (setf (variable-value 'isearch-next-last :buffer) nil)
  
negative.code: 
  (defun isearch-end ()
    (isearch-reset-overlays (current-buffer))
    (change-previous-string *isearch-string*)
    (buffer-unbound (current-buffer) 'isearch-redisplay-string)
    (remove-hook (variable-value 'after-change-functions :buffer)
                 'isearch-change-buffer-hook)
  