comparison src/search.c @ 460:223736d75acb r21-2-45

Import from CVS: tag r21-2-45
author cvs
date Mon, 13 Aug 2007 11:43:24 +0200
parents 1ccc32a20af4
children 0784d089fdc9
comparison
equal deleted inserted replaced
459:9d4fd877b885 460:223736d75acb
310 p1 = BI_BUF_BEGV (buf); 310 p1 = BI_BUF_BEGV (buf);
311 p2 = BI_BUF_CEILING_OF (buf, p1); 311 p2 = BI_BUF_CEILING_OF (buf, p1);
312 s1 = p2 - p1; 312 s1 = p2 - p1;
313 s2 = BI_BUF_ZV (buf) - p2; 313 s2 = BI_BUF_ZV (buf) - p2;
314 314
315 regex_match_object = Qnil;
315 regex_emacs_buffer = buf; 316 regex_emacs_buffer = buf;
316 regex_emacs_buffer_p = 1;
317 i = re_match_2 (bufp, (char *) BI_BUF_BYTE_ADDRESS (buf, p1), 317 i = re_match_2 (bufp, (char *) BI_BUF_BYTE_ADDRESS (buf, p1),
318 s1, (char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2, 318 s1, (char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2,
319 BI_BUF_PT (buf) - BI_BUF_BEGV (buf), &search_regs, 319 BI_BUF_PT (buf) - BI_BUF_BEGV (buf), &search_regs,
320 BI_BUF_ZV (buf) - BI_BUF_BEGV (buf)); 320 BI_BUF_ZV (buf) - BI_BUF_BEGV (buf));
321 321
401 ? XCASE_TABLE_DOWNCASE (buf->case_table) : Qnil), 401 ? XCASE_TABLE_DOWNCASE (buf->case_table) : Qnil),
402 0, ERROR_ME); 402 0, ERROR_ME);
403 QUIT; 403 QUIT;
404 { 404 {
405 Bytecount bis = charcount_to_bytecount (XSTRING_DATA (string), s); 405 Bytecount bis = charcount_to_bytecount (XSTRING_DATA (string), s);
406 regex_match_object = string;
406 regex_emacs_buffer = buf; 407 regex_emacs_buffer = buf;
407 regex_emacs_buffer_p = 0;
408 val = re_search (bufp, (char *) XSTRING_DATA (string), 408 val = re_search (bufp, (char *) XSTRING_DATA (string),
409 XSTRING_LENGTH (string), bis, 409 XSTRING_LENGTH (string), bis,
410 XSTRING_LENGTH (string) - bis, 410 XSTRING_LENGTH (string) - bis,
411 &search_regs); 411 &search_regs);
412 } 412 }
493 memcpy (newnonreloc, XSTRING_DATA (reloc), length); 493 memcpy (newnonreloc, XSTRING_DATA (reloc), length);
494 } 494 }
495 } 495 }
496 496
497 /* #### evil current-buffer dependency */ 497 /* #### evil current-buffer dependency */
498 regex_match_object = reloc;
498 regex_emacs_buffer = current_buffer; 499 regex_emacs_buffer = current_buffer;
499 regex_emacs_buffer_p = 0;
500 val = re_search (bufp, (char *) newnonreloc + offset, length, 0, 500 val = re_search (bufp, (char *) newnonreloc + offset, length, 0,
501 length, 0); 501 length, 0);
502 502
503 no_quit_in_re_search = 0; 503 no_quit_in_re_search = 0;
504 return val; 504 return val;
782 /* We store the first 256 chars in an array here and the rest in 782 /* We store the first 256 chars in an array here and the rest in
783 a range table. */ 783 a range table. */
784 unsigned char fastmap[0400]; 784 unsigned char fastmap[0400];
785 int negate = 0; 785 int negate = 0;
786 REGISTER int i; 786 REGISTER int i;
787 #ifndef emacs
787 Lisp_Char_Table *syntax_table = XCHAR_TABLE (buf->mirror_syntax_table); 788 Lisp_Char_Table *syntax_table = XCHAR_TABLE (buf->mirror_syntax_table);
789 #endif
788 Bufpos limit; 790 Bufpos limit;
789 791
790 if (NILP (lim)) 792 if (NILP (lim))
791 limit = forwardp ? BUF_ZV (buf) : BUF_BEGV (buf); 793 limit = forwardp ? BUF_ZV (buf) : BUF_BEGV (buf);
792 else 794 else
878 { 880 {
879 Bufpos start_point = BUF_PT (buf); 881 Bufpos start_point = BUF_PT (buf);
880 882
881 if (syntaxp) 883 if (syntaxp)
882 { 884 {
885 SETUP_SYNTAX_CACHE_FOR_BUFFER (buf, BUF_PT (buf), forwardp ? 1 : -1);
883 /* All syntax designators are normal chars so nothing strange 886 /* All syntax designators are normal chars so nothing strange
884 to worry about */ 887 to worry about */
885 if (forwardp) 888 if (forwardp)
886 { 889 {
887 while (BUF_PT (buf) < limit 890 while (BUF_PT (buf) < limit
888 && fastmap[(unsigned char) 891 && fastmap[(unsigned char)
889 syntax_code_spec 892 syntax_code_spec
890 [(int) SYNTAX (syntax_table, 893 [(int) SYNTAX_FROM_CACHE (syntax_table,
891 BUF_FETCH_CHAR 894 BUF_FETCH_CHAR
892 (buf, BUF_PT (buf)))]]) 895 (buf, BUF_PT (buf)))]])
893 BUF_SET_PT (buf, BUF_PT (buf) + 1); 896 {
897 BUF_SET_PT (buf, BUF_PT (buf) + 1);
898 UPDATE_SYNTAX_CACHE_FORWARD (BUF_PT (buf));
899 }
894 } 900 }
895 else 901 else
896 { 902 {
897 while (BUF_PT (buf) > limit 903 while (BUF_PT (buf) > limit
898 && fastmap[(unsigned char) 904 && fastmap[(unsigned char)
899 syntax_code_spec 905 syntax_code_spec
900 [(int) SYNTAX (syntax_table, 906 [(int) SYNTAX_FROM_CACHE (syntax_table,
901 BUF_FETCH_CHAR 907 BUF_FETCH_CHAR
902 (buf, BUF_PT (buf) - 1))]]) 908 (buf, BUF_PT (buf) - 1))]])
903 BUF_SET_PT (buf, BUF_PT (buf) - 1); 909 {
910 BUF_SET_PT (buf, BUF_PT (buf) - 1);
911 UPDATE_SYNTAX_CACHE_BACKWARD (BUF_PT (buf) - 1);
912 }
904 } 913 }
905 } 914 }
906 else 915 else
907 { 916 {
908 if (forwardp) 917 if (forwardp)
1158 1167
1159 p1 = BI_BUF_BEGV (buf); 1168 p1 = BI_BUF_BEGV (buf);
1160 p2 = BI_BUF_CEILING_OF (buf, p1); 1169 p2 = BI_BUF_CEILING_OF (buf, p1);
1161 s1 = p2 - p1; 1170 s1 = p2 - p1;
1162 s2 = BI_BUF_ZV (buf) - p2; 1171 s2 = BI_BUF_ZV (buf) - p2;
1172 regex_match_object = Qnil;
1163 1173
1164 while (n < 0) 1174 while (n < 0)
1165 { 1175 {
1166 Bytecount val; 1176 Bytecount val;
1167 QUIT; 1177 QUIT;
1168 regex_emacs_buffer = buf; 1178 regex_emacs_buffer = buf;
1169 regex_emacs_buffer_p = 1;
1170 val = re_search_2 (bufp, 1179 val = re_search_2 (bufp,
1171 (char *) BI_BUF_BYTE_ADDRESS (buf, p1), s1, 1180 (char *) BI_BUF_BYTE_ADDRESS (buf, p1), s1,
1172 (char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2, 1181 (char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2,
1173 pos - BI_BUF_BEGV (buf), lim - pos, &search_regs, 1182 pos - BI_BUF_BEGV (buf), lim - pos, &search_regs,
1174 pos - BI_BUF_BEGV (buf)); 1183 pos - BI_BUF_BEGV (buf));
1203 while (n > 0) 1212 while (n > 0)
1204 { 1213 {
1205 Bytecount val; 1214 Bytecount val;
1206 QUIT; 1215 QUIT;
1207 regex_emacs_buffer = buf; 1216 regex_emacs_buffer = buf;
1208 regex_emacs_buffer_p = 1;
1209 val = re_search_2 (bufp, 1217 val = re_search_2 (bufp,
1210 (char *) BI_BUF_BYTE_ADDRESS (buf, p1), s1, 1218 (char *) BI_BUF_BYTE_ADDRESS (buf, p1), s1,
1211 (char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2, 1219 (char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2,
1212 pos - BI_BUF_BEGV (buf), lim - pos, &search_regs, 1220 pos - BI_BUF_BEGV (buf), lim - pos, &search_regs,
1213 lim - BI_BUF_BEGV (buf)); 1221 lim - BI_BUF_BEGV (buf));