/* XEmacs routines to deal with syntax tables; also word and list parsing.
Copyright (C) 1985-1994 Free Software Foundation, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
+ Copyright (C) 2001 MORIOKA Tomohiko
This file is part of XEmacs.
struct buffer *buf = decode_buffer (buffer, 0);
syntax_table = check_syntax_table (syntax_table, Qnil);
buf->syntax_table = syntax_table;
+#ifndef UTF2000
buf->mirror_syntax_table = XCHAR_TABLE (syntax_table)->mirror_table;
+#endif
/* Indicate that this buffer now has a specified syntax table. */
buf->local_var_flags |= XINT (buffer_local_flags.syntax_table);
return syntax_table;
else
{
tmp_table = Qnil; /* silence compiler */
- /* Always aborts. #### Is there another sensible thing to do here? */
+ /* Always ABORTs. #### Is there another sensible thing to do here? */
assert (BUFFERP (syntax_cache.object) || STRINGP (syntax_cache.object));
}
if (EQ (Fsyntax_table_p (tmp_table), Qt))
{
syntax_cache.use_code = 0;
+#ifdef UTF2000
+ syntax_cache.current_syntax_table = tmp_table;
+#else
syntax_cache.current_syntax_table =
XCHAR_TABLE (tmp_table)->mirror_table;
+#endif
}
else if (CONSP (tmp_table) && INTP (XCAR (tmp_table)))
{
syntax_cache.use_code = 1;
- syntax_cache.syntax_code = XINT (XCAR(tmp_table));
+ syntax_cache.syntax_code = (enum syntaxcode) XINT (XCAR (tmp_table));
}
else
{
syntax_cache.use_code = 0;
+#ifdef UTF2000
+ syntax_cache.current_syntax_table =
+ syntax_cache.buffer->syntax_table;
+#else
syntax_cache.current_syntax_table =
syntax_cache.buffer->mirror_syntax_table;
+#endif
}
#ifdef SYNTAX_CACHE_STATISTICS
*/
(character, syntax_table))
{
+#ifndef UTF2000
Lisp_Char_Table *mirrortab;
+#endif
if (NILP (character))
{
}
CHECK_CHAR_COERCE_INT (character);
syntax_table = check_syntax_table (syntax_table, current_buffer->syntax_table);
+#ifdef UTF2000
+ return make_char (syntax_code_spec[(int) SYNTAX (XCHAR_TABLE(syntax_table),
+ XCHAR (character))]);
+#else
mirrortab = XCHAR_TABLE (XCHAR_TABLE (syntax_table)->mirror_table);
return make_char (syntax_code_spec[(int) SYNTAX (mirrortab, XCHAR (character))]);
+#endif
}
#ifdef MULE
*/
(character, syntax_table))
{
+#ifndef UTF2000
Lisp_Char_Table *mirrortab;
+#endif
int code;
CHECK_CHAR_COERCE_INT (character);
syntax_table = check_syntax_table (syntax_table, current_buffer->syntax_table);
+#ifdef UTF2000
+ code = SYNTAX (XCHAR_TABLE (syntax_table), XCHAR (character));
+#else
mirrortab = XCHAR_TABLE (XCHAR_TABLE (syntax_table)->mirror_table);
code = SYNTAX (mirrortab, XCHAR (character));
+#endif
if (code == Sopen || code == Sclose || code == Sstring)
return syntax_match (syntax_table, XCHAR (character));
return Qnil;
Bufpos beg = BUF_BEGV (buf);
Bufpos pos = BUF_PT (buf);
#ifndef emacs
+#ifdef UTF2000
+ Lisp_Char_Table *mirrortab = XCHAR_TABLE (buf->syntax_table);
+#else
Lisp_Char_Table *mirrortab = XCHAR_TABLE (buf->mirror_syntax_table);
#endif
+#endif
Emchar c = '\0'; /* initialize to avoid compiler warnings */
return 0;
}
+#ifndef UTF2000
static void
update_just_this_syntax_table (Lisp_Char_Table *ct)
{
else
update_just_this_syntax_table (ct);
}
+#endif
\f
/************************************************************************/