anchor.diff:                       (lambda (marker)
                          (search-from-end marker nil))
                        (lambda (marker)
  -                       (line-offset marker -1))
  +                       (nth-value 1 (line-offset marker -1)))
                        (lambda (marker charpos)
                          (unless (zerop nlines)
                            (line-offset marker (- nlines)))
  
positive.code:           (endp
             (m :end end))
            (t
             (m)))))
negative.code:               (setf start (1+ (or pos start))))))
  
  (defun search-forward-symbol (marker name &optional limit-marker)
    (let ((charpos (marker-charpos marker)))
      (search-step marker
                   (lambda (marker)
                     (cdr (search-symbol (line-string-at marker) name :start charpos)))
                   (lambda (marker)
                     (cdr (search-symbol (line-string-at marker) name)))
                   (lambda (marker)
                     (nth-value 1 (line-offset marker 1)))
                   (lambda (marker charpos)
                     (line-offset marker 0 charpos))
                   (search-forward-endp-function limit-marker))))
  
  (defun search-backward-symbol (marker name &optional limit-marker)
    (search-step marker
                 (lambda (marker)
                   (car (search-symbol (line-string-at marker)
                                       name
                                       :end (marker-charpos marker)
                                       :from-end t)))
                 (lambda (marker)
                   (car (search-symbol (line-string-at marker)
                                       name
                                       :from-end t)))
                 (lambda (marker)
                   (nth-value 1 (line-offset marker -1)))
                 (lambda (marker charpos)
                   (line-offset marker 0 charpos))
                 (search-backward-endp-function limit-marker)))
  
  (defun looking-at-line (regex &key (start nil startp) (end nil endp))
    (macrolet ((m (&rest args)
  