anchor.diff:                         (character-offset (line-start point) charpos))
                        (search-backward-endp-function limit-point))))))
   
  +(define-compiler-macro search-forward-regexp (&whole form &environment env
  +                                                     point regex &optional limit-point)
  +  (if (constantp regex env)
  +      `(search-forward-regexp ,point (load-time-value (ppcre:create-scanner ,regex))
  +                              ,limit-point)
  +      form))
  +
   (defun search-forward-regexp (point regex &optional limit-point)
     (let ((scanner (ignore-errors (ppcre:create-scanner regex)))
           (string)
  
positive.code:                         reg-starts
                          reg-ends))
              t)))))
  
  (defun search-backward-regexp (point regex &optional limit-point)
    (let ((scanner (ignore-errors (ppcre:create-scanner regex)))
  
negative.code:                      reg-starts
                       reg-ends))))))
  
  (define-compiler-macro looking-at (&whole form &environment env point regex)
    (if (constantp regex env)
        `(looking-at ,point (load-time-value (ppcre:create-scanner ,regex)))
        form))
  
  (defun match-string-at (point string &optional across-line-p)
    (let ((overp
           (> (+ (point-charpos point) (length string))
  