/* String search routines for XEmacs.
Copyright (C) 1985, 1986, 1987, 1992-1995 Free Software Foundation, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
+ Copyright (C) 1999,2000,2001 MORIOKA Tomohiko
This file is part of XEmacs.
s1 = p2 - p1;
s2 = BI_BUF_ZV (buf) - p2;
+ regex_match_object = Qnil;
regex_emacs_buffer = buf;
- regex_emacs_buffer_p = 1;
i = re_match_2 (bufp, (char *) BI_BUF_BYTE_ADDRESS (buf, p1),
s1, (char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2,
BI_BUF_PT (buf) - BI_BUF_BEGV (buf), &search_regs,
QUIT;
{
Bytecount bis = charcount_to_bytecount (XSTRING_DATA (string), s);
+ regex_match_object = string;
regex_emacs_buffer = buf;
- regex_emacs_buffer_p = 0;
val = re_search (bufp, (char *) XSTRING_DATA (string),
XSTRING_LENGTH (string), bis,
XSTRING_LENGTH (string) - bis,
}
/* #### evil current-buffer dependency */
+ regex_match_object = reloc;
regex_emacs_buffer = current_buffer;
- regex_emacs_buffer_p = 0;
val = re_search (bufp, (char *) newnonreloc + offset, length, 0,
length, 0);
unsigned char fastmap[0400];
int negate = 0;
REGISTER int i;
+#ifndef emacs
+#ifdef UTF2000
+ Lisp_Char_Table *syntax_table = XCHAR_TABLE (buf->syntax_table);
+#else
Lisp_Char_Table *syntax_table = XCHAR_TABLE (buf->mirror_syntax_table);
+#endif
+#endif
Bufpos limit;
if (NILP (lim))
if (syntaxp)
{
+ SETUP_SYNTAX_CACHE_FOR_BUFFER (buf, BUF_PT (buf), forwardp ? 1 : -1);
/* All syntax designators are normal chars so nothing strange
to worry about */
if (forwardp)
while (BUF_PT (buf) < limit
&& fastmap[(unsigned char)
syntax_code_spec
- [(int) SYNTAX (syntax_table,
- BUF_FETCH_CHAR
- (buf, BUF_PT (buf)))]])
- BUF_SET_PT (buf, BUF_PT (buf) + 1);
+ [(int) SYNTAX_FROM_CACHE (syntax_table,
+ BUF_FETCH_CHAR
+ (buf, BUF_PT (buf)))]])
+ {
+ BUF_SET_PT (buf, BUF_PT (buf) + 1);
+ UPDATE_SYNTAX_CACHE_FORWARD (BUF_PT (buf));
+ }
}
else
{
while (BUF_PT (buf) > limit
&& fastmap[(unsigned char)
syntax_code_spec
- [(int) SYNTAX (syntax_table,
- BUF_FETCH_CHAR
- (buf, BUF_PT (buf) - 1))]])
- BUF_SET_PT (buf, BUF_PT (buf) - 1);
+ [(int) SYNTAX_FROM_CACHE (syntax_table,
+ BUF_FETCH_CHAR
+ (buf, BUF_PT (buf) - 1))]])
+ {
+ BUF_SET_PT (buf, BUF_PT (buf) - 1);
+ UPDATE_SYNTAX_CACHE_BACKWARD (BUF_PT (buf) - 1);
+ }
}
}
else
p2 = BI_BUF_CEILING_OF (buf, p1);
s1 = p2 - p1;
s2 = BI_BUF_ZV (buf) - p2;
+ regex_match_object = Qnil;
while (n < 0)
{
Bytecount val;
QUIT;
regex_emacs_buffer = buf;
- regex_emacs_buffer_p = 1;
val = re_search_2 (bufp,
(char *) BI_BUF_BYTE_ADDRESS (buf, p1), s1,
(char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2,
Bytecount val;
QUIT;
regex_emacs_buffer = buf;
- regex_emacs_buffer_p = 1;
val = re_search_2 (bufp,
(char *) BI_BUF_BYTE_ADDRESS (buf, p1), s1,
(char *) BI_BUF_BYTE_ADDRESS (buf, p2), s2,
{
/* Keep track of which character set row
contains the characters that need translation. */
+#ifdef UTF2000
+ int charset_base_code = c >> 6;
+#else
int charset_base_code = c & ~CHAR_FIELD3_MASK;
+#endif
if (charset_base == -1)
charset_base = charset_base_code;
else if (charset_base != charset_base_code)
while (!BUFBYTE_FIRST_BYTE_P (*charstart))
charstart--;
untranslated = charptr_emchar (charstart);
+#ifdef UTF2000
+ if (charset_base == (untranslated >> 6))
+#else
if (charset_base == (untranslated & ~CHAR_FIELD3_MASK))
+#endif
{
ch = TRANSLATE (trt, untranslated);
if (!BUFBYTE_FIRST_BYTE_P (*ptr))
Charcount i, len;
EMACS_INT punct_count = 0, word_count = 0;
struct buffer *buf = decode_buffer (buffer, 0);
+#ifdef UTF2000
+ Lisp_Char_Table *syntax_table = XCHAR_TABLE (buf->syntax_table);
+#else
Lisp_Char_Table *syntax_table = XCHAR_TABLE (buf->mirror_syntax_table);
+#endif
CHECK_STRING (string);
len = XSTRING_CHAR_LENGTH (string);
buf = XBUFFER (buffer);
}
+#ifdef UTF2000
+ syntax_table = XCHAR_TABLE (buf->syntax_table);
+#else
syntax_table = XCHAR_TABLE (buf->mirror_syntax_table);
+#endif
case_action = nochange; /* We tried an initialization */
/* but some C compilers blew it */