anchor.diff:    (let ((scanner (ignore-errors (ppcre:create-scanner regex))))
       (when scanner
         (search-step marker
  -                    (lambda (marker)
  -                      (multiple-value-bind (start end)
  -                          (ppcre:scan scanner
  -                                      (line-string-at marker)
  -                                      :start (marker-charpos marker))
  -                        (when (and start
  -                                   (if (= start end)
  -                                       (< (marker-charpos marker) start)
  -                                       (<= (marker-charpos marker) start)))
  -                          (if (= start end)
  -                              (1+ end)
  -                              end))))
  -                    (lambda (marker)
  -                      (nth-value 1
  -                                 (ppcre:scan scanner
  -                                             (line-string-at marker))))
  -                    (lambda (marker)
  -                      (line-offset marker 1))
  -                    (lambda (marker charpos)
  -                      (character-offset (line-start marker) charpos))
  -                    (search-forward-endp-function limit-marker)))))
  +                   (lambda (marker)
  +                     (multiple-value-bind (start end)
  +                         (ppcre:scan scanner
  +                                     (line-string-at marker)
  +                                     :start (marker-charpos marker))
  +                       (when (and start
  +                                  (if (= start end)
  +                                      (< (marker-charpos marker) start)
  +                                      (<= (marker-charpos marker) start)))
  +                         (if (= start end)
  +                             (1+ end)
  +                             end))))
  +                   (lambda (marker)
  +                     (nth-value 1
  +                                (ppcre:scan scanner
  +                                            (line-string-at marker))))
  +                   (lambda (marker)
  +                     (nth-value 1 (line-offset marker 1)))
  +                   (lambda (marker charpos)
  +                     (character-offset (line-start marker) charpos))
  +                   (search-forward-endp-function limit-marker)))))
   
   (defun search-backward-regexp (marker regex &optional limit-marker)
     (let ((scanner (ignore-errors (ppcre:create-scanner regex))))
       (when scanner
         (search-step marker
  -                    (lambda (marker)
  -                      (let (pos)
  -                        (ppcre:do-scans (start end reg-starts reg-ends scanner
  -                                               (line-string-at marker) nil
  -                                               :end (marker-charpos marker))
  -                          (setf pos start))
  -                        pos))
  -                    (lambda (marker)
  -                      (let (pos)
  -                        (ppcre:do-scans (start end reg-starts reg-ends scanner
  -                                               (line-string-at marker) nil
  -                                               :start (marker-charpos marker))
  -                          (setf pos start))
  -                        pos))
  -                    (lambda (marker)
  -                      (line-offset marker -1))
  -                    (lambda (marker charpos)
  -                      (character-offset (line-start marker) charpos))
  -                    (search-backward-endp-function limit-marker)))))
  +                   (lambda (marker)
  +                     (let (pos)
  +                       (ppcre:do-scans (start end reg-starts reg-ends scanner
  +                                              (line-string-at marker) nil
  +                                              :end (marker-charpos marker))
  +                         (setf pos start))
  +                       pos))
  +                   (lambda (marker)
  +                     (let (pos)
  +                       (ppcre:do-scans (start end reg-starts reg-ends scanner
  +                                              (line-string-at marker) nil
  +                                              :start (marker-charpos marker))
  +                         (setf pos start))
  +                       pos))
  +                   (lambda (marker)
  +                     (nth-value 1 (line-offset marker -1)))
  +                   (lambda (marker charpos)
  +                     (character-offset (line-start marker) charpos))
  +                   (search-backward-endp-function limit-marker)))))
   
   (defun search-symbol (string name &key (start 0) (end (length string)) from-end)
     (loop :while (< start end)
  
positive.code:                      (lambda (marker)
                         (search-from-end marker nil))
                       (lambda (marker)
                         (line-offset marker -1))
                       (lambda (marker charpos)
                         (unless (zerop nlines)
                           (line-offset marker (- nlines)))
  
negative.code:           (endp
             (m :end end))
            (t
             (m)))))
  