Use utf-8-mcs-er instead of utf-8-mcs.
[chise/xemacs-chise.git-] / src / fns.c
index 46241f0..03677ed 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -3774,7 +3774,7 @@ ids_format_unit (Lisp_Object ids_char)
   if (CHARP (ids_char))
     return Fchar_to_string (ids_char);
   else if (INTP (ids_char))
-    return Fchar_to_string (Fdecode_char (Qucs, ids_char, Qnil));
+    return Fchar_to_string (Fdecode_char (Qmap_ucs, ids_char, Qnil));
   else
     {
       Lisp_Object ret = Ffind_char (ids_char);
@@ -3811,6 +3811,59 @@ Format ideographic-structure IDS-LIST as an IDS-string.
     }
   return dest;
 }
+
+Lisp_Object simplify_char_spec (Lisp_Object char_spec);
+Lisp_Object
+simplify_char_spec (Lisp_Object char_spec)
+{
+  if (CHARP (char_spec))
+    return char_spec;
+  else if (INTP (char_spec))
+    return Fdecode_char (Qmap_ucs, char_spec, Qnil);
+  else
+    {
+      Lisp_Object ret = Ffind_char (char_spec);
+      
+      if (CHARP (ret))
+       return ret;
+      else
+       return char_spec;
+    }
+}
+
+Lisp_Object char_ref_simplify_spec (Lisp_Object char_ref);
+Lisp_Object
+char_ref_simplify_spec (Lisp_Object char_ref)
+{
+  if (!NILP (Fchar_ref_p (char_ref)))
+    {
+      Lisp_Object ret = Fplist_get (char_ref, Qkeyword_char, Qnil);
+
+      if (NILP (ret))
+       return char_ref;
+      else
+       return Fplist_put (Fcopy_sequence (char_ref), Qkeyword_char,
+                          simplify_char_spec (ret));
+    }
+  else
+    return simplify_char_spec (char_ref);
+}
+
+DEFUN ("char-refs-simplify-char-specs",
+       Fchar_refs_simplify_char_specs, 1, 1, 0, /*
+Simplify char-specs in CHAR-REFS.
+*/
+       (char_refs))
+{
+  Lisp_Object rest = char_refs;
+
+  while (CONSP (rest))
+    {
+      Fsetcar (rest, char_ref_simplify_spec (XCAR (rest)));
+      rest = XCDR (rest);
+    }
+  return char_refs;
+}
 \f
 Lisp_Object Qyes_or_no_p;
 
@@ -3910,6 +3963,7 @@ syms_of_fns (void)
   DEFSUBR (Fbase64_decode_region);
   DEFSUBR (Fbase64_decode_string);
   DEFSUBR (Fideographic_structure_to_ids);
+  DEFSUBR (Fchar_refs_simplify_char_specs);
 }
 
 void