(open_chise_data_source_maybe): Use Vdata_directory instead of
[chise/xemacs-chise.git.1] / src / chartab.c
index c900f16..8d264a9 100644 (file)
@@ -1130,10 +1130,6 @@ make_char_id_table (Lisp_Object initval)
 }
 
 
-#if defined(HAVE_CHISE) && !defined(HAVE_LIBCHISE_LIBCHISE)
-Lisp_Object Qsystem_char_id;
-#endif
-
 Lisp_Object Qcomposition;
 Lisp_Object Q_decomposition;
 Lisp_Object Q_identical;
@@ -1144,8 +1140,6 @@ Lisp_Object Q_subsumptive;
 Lisp_Object Q_subsumptive_from;
 Lisp_Object Q_component;
 Lisp_Object Q_component_of;
-Lisp_Object Q_same;
-Lisp_Object Q_same_of;
 Lisp_Object Qto_ucs;
 Lisp_Object Q_ucs_unified;
 Lisp_Object Qcompat;
@@ -3514,11 +3508,10 @@ Store CHARACTER's ATTRIBUTE with VALUE.
            EQ (attribute, Q_identical_from) ||
            EQ (attribute, Q_component) ||
            EQ (attribute, Q_component_of) ||
-           EQ (attribute, Q_same) ||
-           EQ (attribute, Q_same_of) ||
            !NILP (Fstring_match
                   (build_string ("^\\(<-\\|->\\)\\(simplified"
-                                 "\\|vulgar\\|wrong"
+                                 "\\|same\\|vulgar\\|wrong"
+                                 "\\|original\\|ancient"
                                  "\\)[^*]*$"),
                    Fsymbol_name (attribute),
                    Qnil, Qnil)) )
@@ -3545,10 +3538,6 @@ Store CHARACTER's ATTRIBUTE with VALUE.
        rev_feature = Q_component_of;
       else if (EQ (attribute, Q_component_of))
        rev_feature = Q_component;
-      else if (EQ (attribute, Q_same))
-       rev_feature = Q_same_of;
-      else if (EQ (attribute, Q_same_of))
-       rev_feature = Q_same;
       else
        {
          Lisp_String* name = symbol_name (XSYMBOL (attribute));
@@ -3591,8 +3580,9 @@ Store CHARACTER's ATTRIBUTE with VALUE.
              if (!CONSP (ffv))
                put_char_attribute (ret, rev_feature, list1 (character));
              else if (NILP (Fmemq (character, ffv)))
-               put_char_attribute (ret, rev_feature,
-                                   Fcons (character, ffv));
+               put_char_attribute
+                 (ret, rev_feature,
+                  nconc2 (Fcopy_sequence (ffv), list1 (character)));
              Fsetcar (rest, ret);
            }
          rest = XCDR (rest);
@@ -3645,11 +3635,11 @@ open_chise_data_source_maybe ()
 {
   if (default_chise_data_source == NULL)
     {
-      Lisp_Object db_dir = Vexec_directory;
+      Lisp_Object db_dir = Vdata_directory;
       int modemask = 0755;             /* rwxr-xr-x */
 
       if (NILP (db_dir))
-       db_dir = build_string ("../lib-src");
+       db_dir = build_string ("../etc");
       db_dir = Fexpand_file_name (build_string ("chise-db"), db_dir);
 
       default_chise_data_source
@@ -3753,10 +3743,10 @@ Lisp_Object
 char_attribute_system_db_file (Lisp_Object key_type, Lisp_Object attribute,
                               int writing_mode)
 {
-  Lisp_Object db_dir = Vexec_directory;
+  Lisp_Object db_dir = Vdata_directory;
 
   if (NILP (db_dir))
-    db_dir = build_string ("../lib-src");
+    db_dir = build_string ("../etc");
 
   db_dir = Fexpand_file_name (build_string ("chise-db"), db_dir);
   if (writing_mode && NILP (Ffile_exists_p (db_dir)))
@@ -3799,6 +3789,10 @@ char_attribute_system_db_file (Lisp_Object key_type, Lisp_Object attribute,
 }
 #endif /* not HAVE_LIBCHISE */
 
+#ifdef HAVE_LIBCHISE
+Lisp_Object save_charset_properties (Lisp_Object charset);
+#endif /* HAVE_LIBCHISE */
+
 DEFUN ("save-char-attribute-table", Fsave_char_attribute_table, 1, 1, 0, /*
 Save values of ATTRIBUTE into database file.
 */
@@ -3839,14 +3833,20 @@ Save values of ATTRIBUTE into database file.
     {
       Lisp_Object (*filter)(Lisp_Object value);
 
-      if ( EQ (attribute, Qideographic_structure)
+      if ( !NILP (Ffind_charset (attribute)) )
+       {
+#ifdef HAVE_LIBCHISE
+         save_charset_properties (attribute);
+#endif /* HAVE_LIBCHISE */
+         filter = NULL;
+       }
+      else if ( EQ (attribute, Qideographic_structure)
           || EQ (attribute, Q_identical)
           || EQ (attribute, Q_identical_from)
-          || EQ (attribute, Q_same)
-          || EQ (attribute, Q_same_of)
           || !NILP (Fstring_match
                     (build_string ("^\\(<-\\|->\\)\\(simplified"
-                                   "\\|vulgar\\|wrong"
+                                   "\\|same\\|vulgar\\|wrong"
+                                   "\\|original\\|ancient"
                                    "\\)[^*]*$"),
                      Fsymbol_name (attribute),
                      Qnil, Qnil)) )
@@ -4623,8 +4623,6 @@ syms_of_chartab (void)
   defsymbol (&Q_identical_from,                "<-identical");
   defsymbol (&Q_component,             "->ideographic-component-forms");
   defsymbol (&Q_component_of,          "<-ideographic-component-forms");
-  defsymbol (&Q_same,                  "->same");
-  defsymbol (&Q_same_of,               "<-same");
   defsymbol (&Qcomposition,            "composition");
   defsymbol (&Q_decomposition,         "->decomposition");
   defsymbol (&Qcompat,                 "compat");