return copy_category_table (table);
}
+DEFUN ("make-category-table", Fmake_category_table, Smake_category_table,
+ 0, 0, 0,
+ "Construct a new and empty category table and return it.")
+ ()
+{
+ Lisp_Object val;
+
+ val = Fmake_char_table (Qcategory_table, Qnil);
+ XCHAR_TABLE (val)->defalt = MAKE_CATEGORY_SET;
+ Fset_char_table_extra_slot (val, make_number (0),
+ Fmake_vector (make_number (95), Qnil));
+ return val;
+}
+
DEFUN ("set-category-table", Fset_category_table, Sset_category_table, 1, 1, 0,
"Specify TABLE as the category table for the current buffer.")
(table)
Lisp_Object val;
int i;
- if (NILP (XCHAR_TABLE (table)->defalt))
- {
- val = MAKE_CATEGORY_SET;
- SET_CATEGORY_SET (val, category, set_value);
- XCHAR_TABLE (table)->defalt = val;
- }
+ val = XCHAR_TABLE (table)->defalt;
+ if (!CATEGORY_SET_P (val))
+ val = MAKE_CATEGORY_SET;
+ SET_CATEGORY_SET (val, category, set_value);
+ XCHAR_TABLE (table)->defalt = val;
for (i = 32; i < SUB_CHAR_TABLE_ORDINARY_SLOTS; i++)
{
Lisp_Object tail;
int default_result;
- if (COMPOSITE_CHAR_P (c1))
- c1 = cmpchar_component (c1, 0, 1);
- if (COMPOSITE_CHAR_P (c2))
- c2 = cmpchar_component (c2, 0, 1);
-
if (CHAR_CHARSET (c1) == CHAR_CHARSET (c2))
{
tail = Vword_separating_categories;
if (NILP (category_set2))
return default_result;
- for (; CONSP (tail); tail = XCONS (tail)->cdr)
+ for (; CONSP (tail); tail = XCDR (tail))
{
- Lisp_Object elt = XCONS(tail)->car;
+ Lisp_Object elt = XCAR (tail);
if (CONSP (elt)
- && CATEGORYP (XCONS (elt)->car)
- && CATEGORYP (XCONS (elt)->cdr)
- && CATEGORY_MEMBER (XFASTINT (XCONS (elt)->car), category_set1)
- && CATEGORY_MEMBER (XFASTINT (XCONS (elt)->cdr), category_set2))
+ && CATEGORYP (XCAR (elt))
+ && CATEGORYP (XCDR (elt))
+ && CATEGORY_MEMBER (XFASTINT (XCAR (elt)), category_set1)
+ && CATEGORY_MEMBER (XFASTINT (XCDR (elt)), category_set2))
return !default_result;
}
return default_result;
defsubr (&Scategory_table);
defsubr (&Sstandard_category_table);
defsubr (&Scopy_category_table);
+ defsubr (&Smake_category_table);
defsubr (&Sset_category_table);
defsubr (&Schar_category_set);
defsubr (&Scategory_set_mnemonics);