emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/search.c,v


From: Chong Yidong
Subject: [Emacs-diffs] Changes to emacs/src/search.c,v
Date: Tue, 19 Sep 2006 21:44:53 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      06/09/19 21:44:52

Index: search.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/search.c,v
retrieving revision 1.213
retrieving revision 1.214
diff -u -b -r1.213 -r1.214
--- search.c    17 Sep 2006 17:38:59 -0000      1.213
+++ search.c    19 Sep 2006 21:44:52 -0000      1.214
@@ -42,6 +42,9 @@
 {
   struct regexp_cache *next;
   Lisp_Object regexp, whitespace_regexp;
+  /* Syntax table for which the regexp applies.  We need this because
+     of character classes.  */
+  Lisp_Object syntax_table;
   struct re_pattern_buffer buf;
   char fastmap[0400];
   /* Nonzero means regexp was compiled to do full POSIX backtracking.  */
@@ -167,6 +170,7 @@
   cp->posix = posix;
   cp->buf.multibyte = multibyte;
   cp->whitespace_regexp = Vsearch_spaces_regexp;
+  cp->syntax_table = current_buffer->syntax_table;
   /* Doing BLOCK_INPUT here has the effect that
      the debugger won't run if an error occurs.
      Why is BLOCK_INPUT needed here?  */
@@ -256,6 +260,10 @@
          && EQ (cp->buf.translate, (! NILP (translate) ? translate : 
make_number (0)))
          && cp->posix == posix
          && cp->buf.multibyte == multibyte
+         /* TODO: Strictly speaking, we only need to match syntax
+            tables when a character class like [[:space:]] occurs in
+            the pattern. -- cyd*/
+         && EQ (cp->syntax_table, current_buffer->syntax_table)
          && !NILP (Fequal (cp->whitespace_regexp, Vsearch_spaces_regexp)))
        break;
 
@@ -3114,8 +3122,10 @@
       searchbufs[i].buf.fastmap = searchbufs[i].fastmap;
       searchbufs[i].regexp = Qnil;
       searchbufs[i].whitespace_regexp = Qnil;
+      searchbufs[i].syntax_table = Qnil;
       staticpro (&searchbufs[i].regexp);
       staticpro (&searchbufs[i].whitespace_regexp);
+      staticpro (&searchbufs[i].syntax_table);
       searchbufs[i].next = (i == REGEXP_CACHE_SIZE-1 ? 0 : &searchbufs[i+1]);
     }
   searchbuf_head = &searchbufs[0];




reply via email to

[Prev in Thread] Current Thread [Next in Thread]