+2002-08-26 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * iso8859-1.el: Don't set `iso8859/1-case-table' to the
+ standard-case-table in UTF-2000.
+
2002-08-20 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
* mule/mule-coding.el (coded-charset-entity-reference-alist): Add
)
\f
+(unless (featurep 'utf-2000)
(defconst iso8859/1-case-table nil
"The case table for ISO-8859/1 characters.")
)
(set-standard-case-table (mapcar 'copy-sequence iso8859/1-case-table))
+)
(setq-default ctl-arrow 'iso-8859/1)
+2002-08-26 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.h: Add extern declarations for Qdowncase, Qflippedcase,
+ Q_lowercase, Q_uppercase in UTF-2000.
+
+ * chartab.c (get_char_table): Add special code for the standard
+ case table to use character attribute `->downcase' and
+ `->uppercase' for case operations in UTF-2000.
+
+ * casetab.c (Qflippedcase): New variable in UTF-2000.
+ (Q_lowercase): Likewise.
+ (Q_uppercase): Likewise.
+ (syms_of_casetab): Add new symbols `flippedcase', `->lowercase'
+ and `->uppercase' in UTF-2000.
+ (complex_vars_of_casetab): Assign attribute name `downcase' to
+ downcase and CANON table of Vstandard_case_table in UTF-2000;
+ assign attribute name `flippedcase' to upcase and EQV table of
+ Vstandard_case_table in UTF-2000.
+
2002-08-20 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
* text-coding.c (decode_add_er_char): Support isolated-chars.
/* XEmacs routines to deal with case tables.
Copyright (C) 1987, 1992, 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
+ Copyright (C) 2002 MORIOKA Tomohiko
This file is part of XEmacs.
distribution file chartab.c for details. */
/* Modified for Mule by Ben Wing. */
+/* Modified for UTF-2000 by MORIOKA Tomohiko */
/* Case table consists of four char-table. Those are for downcase,
upcase, canonical and equivalent respectively.
Lisp_Object Qcase_tablep, Qdowncase, Qupcase;
Lisp_Object Vstandard_case_table;
+#ifdef UTF2000
+Lisp_Object Qflippedcase, Q_lowercase, Q_uppercase;
+#endif
static void compute_trt_inverse (Lisp_Object trt, Lisp_Object inverse);
Lisp_Object case_table_char (Lisp_Object ch, Lisp_Object table);
defsymbol (&Qcase_tablep, "case-table-p");
defsymbol (&Qdowncase, "downcase");
defsymbol (&Qupcase, "upcase");
+#ifdef UTF2000
+ defsymbol (&Qflippedcase, "flippedcase");
+ defsymbol (&Q_lowercase, "->lowercase");
+ defsymbol (&Q_uppercase, "->uppercase");
+#endif
DEFSUBR (Fcase_table_p);
DEFSUBR (Fget_case_table);
Vstandard_case_table = allocate_case_table ();
+#ifdef UTF2000
tem = MAKE_TRT_TABLE ();
+#ifdef HAVE_DATABASE
+ XCHAR_TABLE_NAME (tem) = Qdowncase;
+#endif
+#else
+ tem = MAKE_TRT_TABLE ();
+#endif
XSET_CASE_TABLE_DOWNCASE (Vstandard_case_table, tem);
XSET_CASE_TABLE_CANON (Vstandard_case_table, tem);
SET_TRT_TABLE_CHAR_1 (tem, i, lowered);
}
+#ifdef UTF2000
+ tem = MAKE_TRT_TABLE ();
+#ifdef HAVE_DATABASE
+ XCHAR_TABLE_NAME (tem) = Qflippedcase;
+#endif
+#else
tem = MAKE_TRT_TABLE ();
+#endif
XSET_CASE_TABLE_UPCASE (Vstandard_case_table, tem);
XSET_CASE_TABLE_EQV (Vstandard_case_table, tem);
get_char_table (Emchar ch, Lisp_Char_Table *ct)
{
#ifdef UTF2000
- return get_char_id_table (ct, ch);
+ {
+ Lisp_Object ret = get_char_id_table (ct, ch);
+
+#ifdef HAVE_DATABASE
+ if (NILP (ret))
+ {
+ if (EQ (CHAR_TABLE_NAME (ct), Qdowncase))
+ ret = Fget_char_attribute (make_char (ch), Q_lowercase, Qnil);
+ else if (EQ (CHAR_TABLE_NAME (ct), Qflippedcase))
+ ret = Fget_char_attribute (make_char (ch), Q_uppercase, Qnil);
+ if (CONSP (ret))
+ {
+ ret = XCAR (ret);
+ if (CONSP (ret))
+ ret = Ffind_char (ret);
+ }
+ }
+#endif
+ return ret;
+ }
#elif defined(MULE)
{
Lisp_Object charset;
EXFUN (Ffind_char, 1);
+extern Lisp_Object Qdowncase, Qflippedcase, Q_lowercase, Q_uppercase;
+
/************************************************************************/
/* Char-ID Tables */