anchor.diff:                         (search str (take-string)))
                      #'(lambda () (next-line 1))
                      #'(lambda (i)
  -                       (beginning-of-line)
  -                       (next-char (+ i (length str))))
  -                   #'eobp))))
  -
  -(defun search-backward (str)
  +                       (and (beginning-of-line)
  +                            (next-char (+ i (length str)))))
  +                   (if limit
  +                       #'(lambda ()
  +                           (or (point< limit (point))
  +                               (eobp)))
  +                       #'eobp)))))
  +
  +(defun search-backward (str &optional limit)
     (multiple-value-bind (lines length)
         (split-string str #\newline)
       (flet ((%search (&rest args)
  
positive.code:                        (%search))
                     #'(lambda () (prev-line 1))
                     #'(lambda (i)
                         (prev-line (1- length))
                         (beginning-of-line)
                         (next-char i))
                     #'bobp))))
  
  (defvar *replace-before-string* nil)
  (defvar *replace-after-string* nil)
  
negative.code:       (point-set point))
      result))
  
  (defun search-forward (str &optional limit)
    (multiple-value-bind (lines length)
        (split-string str #\newline)
      (flet ((take-string ()
  