Mercurial > hg > xemacs-beta
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)); |