Mercurial > emacs
changeset 58326:0cc0d3274d68
(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.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 19 Nov 2004 19:38:26 +0000 |
parents | d82983edcbe6 |
children | a360835c5032 |
files | src/search.c |
diffstat | 1 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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);