diff --git a/src/lisp.h b/src/lisp.h index 70555b3ce91..1276285e2f2 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4802,6 +4802,9 @@ fast_c_string_match_ignore_case (Lisp_Object regexp, ptrdiff_t, ptrdiff_t *); extern ptrdiff_t find_before_next_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *); +extern EMACS_INT search_buffer (Lisp_Object, ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t, EMACS_INT, + int, Lisp_Object, Lisp_Object, bool); extern void syms_of_search (void); extern void clear_regexp_cache (void); diff --git a/src/search.c b/src/search.c index dbc5a83946f..0bb52c03eef 100644 --- a/src/search.c +++ b/src/search.c @@ -68,9 +68,6 @@ #define REGEXP_CACHE_SIZE 20 static EMACS_INT boyer_moore (EMACS_INT, unsigned char *, ptrdiff_t, Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t, int); -static EMACS_INT search_buffer (Lisp_Object, ptrdiff_t, ptrdiff_t, - ptrdiff_t, ptrdiff_t, EMACS_INT, int, - Lisp_Object, Lisp_Object, bool); Lisp_Object re_match_object; @@ -1510,7 +1507,7 @@ search_buffer_non_re (Lisp_Object string, ptrdiff_t pos, return result; } -static EMACS_INT +EMACS_INT search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t lim, ptrdiff_t lim_byte, EMACS_INT n, int RE, Lisp_Object trt, Lisp_Object inverse_trt, bool posix) diff --git a/src/treesit.c b/src/treesit.c index 510170ca640..069fa3608bd 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -2491,7 +2491,8 @@ treesit_predicate_match (Lisp_Object args, struct capture_range captures) ZV = end_pos; ZV_BYTE = end_byte; - ptrdiff_t val = fast_looking_at (regexp, start_pos, start_byte, end_pos, end_byte, Qnil); + ptrdiff_t val = search_buffer (regexp, start_pos, start_byte, end_pos, end_byte, + 1, 1, Qnil, Qnil, false); BEGV = old_begv; BEGV_BYTE = old_begv_byte;