# HG changeset patch # User Richard M. Stallman # Date 1100893106 0 # Node ID 0cc0d3274d68a6114c00154f50f3921d397c263e # Parent d82983edcbe620c69416efe1cb557a1b42d8db44 (Vsearch_whitespace_regexp): New variable. (syms_of_search): Defvar it. (compile_pattern_1): Call re_set_whitespace_regexp with it. (search_buffer): No regexp is trivial if Vsearch_whitespace_regexp is non-nil. diff -r d82983edcbe6 -r 0cc0d3274d68 src/search.c --- a/src/search.c Fri Nov 19 19:36:09 2004 +0000 +++ b/src/search.c Fri Nov 19 19:38:26 2004 +0000 @@ -83,6 +83,8 @@ Lisp_Object Qinvalid_regexp; +Lisp_Object Vsearch_whitespace_regexp; + static void set_search_regs (); static void save_search_regs (); static int simple_search (); @@ -161,8 +163,15 @@ BLOCK_INPUT; old = re_set_syntax (RE_SYNTAX_EMACS | (posix ? 0 : RE_NO_POSIX_BACKTRACKING)); + + re_set_whitespace_regexp (NILP (Vsearch_whitespace_regexp) ? NULL + : SDATA (Vsearch_whitespace_regexp)); + val = (char *) re_compile_pattern ((char *)raw_pattern, raw_pattern_size, &cp->buf); + + re_set_whitespace_regexp (NULL); + re_set_syntax (old); UNBLOCK_INPUT; if (val) @@ -1051,7 +1060,7 @@ return pos; } - if (RE && !trivial_regexp_p (string)) + if (RE && !(trivial_regexp_p (string) && NILP (Vsearch_whitespace_regexp))) { unsigned char *p1, *p2; int s1, s2; @@ -2998,6 +3007,14 @@ saved_last_thing_searched = Qnil; staticpro (&saved_last_thing_searched); + DEFVAR_LISP ("search-whitespace-regexp", &Vsearch_whitespace_regexp, + /* doc: Regexp to substitute for bunches of spaces in regexp search. +Some commands use this for user-specified regexps. +Spaces that occur inside character classes or repetition operators +or other such regexp constructs are not replaced with this. +A value of nil (which is the normal value) means treat spaces literally. */); + Vsearch_whitespace_regexp = Qnil; + defsubr (&Slooking_at); defsubr (&Sposix_looking_at); defsubr (&Sstring_match);