From ecdb561eb45eb29f45eeb678d26dc570ae3ef876 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Fri, 19 Nov 2004 20:02:32 +0000 Subject: [PATCH] (struct regexp_cache): New element whitespace_regexp. (syms_of_search): Initialize whitespace_regexp elements. (compile_pattern): Compare whitespace_regexp elements. (compile_pattern_1): Set whitespace_regexp elements. --- src/search.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/search.c b/src/search.c index b73ed338791..d3287ee4c02 100644 --- a/src/search.c +++ b/src/search.c @@ -41,7 +41,7 @@ Boston, MA 02111-1307, USA. */ struct regexp_cache { struct regexp_cache *next; - Lisp_Object regexp; + Lisp_Object regexp, whitespace_regexp; struct re_pattern_buffer buf; char fastmap[0400]; /* Nonzero means regexp was compiled to do full POSIX backtracking. */ @@ -109,7 +109,9 @@ matcher_overflow () for this pattern. 0 means backtrack only enough to get a valid match. MULTIBYTE is nonzero if we want to handle multibyte characters in PATTERN. 0 means all multibyte characters are recognized just as - sequences of binary data. */ + sequences of binary data. + + The behavior also depends on Vsearch_whitespace_regexp. */ static void compile_pattern_1 (cp, pattern, translate, regp, posix, multibyte) @@ -160,6 +162,7 @@ compile_pattern_1 (cp, pattern, translate, regp, posix, multibyte) cp->buf.translate = (! NILP (translate) ? translate : make_number (0)); cp->posix = posix; cp->buf.multibyte = multibyte; + cp->whitespace_regexp = Vsearch_whitespace_regexp; BLOCK_INPUT; old = re_set_syntax (RE_SYNTAX_EMACS | (posix ? 0 : RE_NO_POSIX_BACKTRACKING)); @@ -232,7 +235,8 @@ compile_pattern (pattern, regp, translate, posix, multibyte) && !NILP (Fstring_equal (cp->regexp, pattern)) && EQ (cp->buf.translate, (! NILP (translate) ? translate : make_number (0))) && cp->posix == posix - && cp->buf.multibyte == multibyte) + && cp->buf.multibyte == multibyte + && !NILP (Fequal (cp->whitespace_regexp, Vsearch_whitespace_regexp))) break; /* If we're at the end of the cache, compile into the nil cell @@ -2981,6 +2985,7 @@ syms_of_search () searchbufs[i].buf.buffer = (unsigned char *) xmalloc (100); searchbufs[i].buf.fastmap = searchbufs[i].fastmap; searchbufs[i].regexp = Qnil; + searchbufs[i].whitespace_regexp = Qnil; staticpro (&searchbufs[i].regexp); searchbufs[i].next = (i == REGEXP_CACHE_SIZE-1 ? 0 : &searchbufs[i+1]); } -- 2.39.2