(Vdecomposition_feature_list): New variable when UTF2000 is defined.
authortomo <tomo>
Fri, 18 Feb 2011 23:45:21 +0000 (23:45 +0000)
committertomo <tomo>
Fri, 18 Feb 2011 23:45:21 +0000 (23:45 +0000)
(char_encode_utf8): Refer variable `decomposition-feature-list'
instead of `=decomposition' feature.
(vars_of_file_coding): Add new variable `decomposition-feature-list'
when UTF2000 is defined.

src/text-coding.c

index 09afa27..6485b64 100644 (file)
@@ -111,6 +111,7 @@ Lisp_Object Qdisable_composition;
 Lisp_Object Qccs_priority_list;
 Lisp_Object Quse_entity_reference;
 Lisp_Object Qd, Qx, QX;
+Lisp_Object Vdecomposition_feature_list;
 #endif
 Lisp_Object Qencode, Qdecode;
 
@@ -4658,10 +4659,23 @@ char_encode_utf8 (struct encoding_stream *str, Emchar ch,
 
       if ( (code_point < 0) || (code_point > 0xEFFFF) )
        {
-         Lisp_Object seq = Fchar_feature (make_char (ch),
-                                          Qrep_decomposition, Qnil,
-                                          Qnil, Qnil);
+         Lisp_Object rest = Vdecomposition_feature_list;
+         Lisp_Object decomp_f;
+         Lisp_Object seq = Qnil;
          Lisp_Object map, ret;
+         struct gcpro gcpro1;
+
+         while ( CONSP (rest) )
+           {
+             decomp_f = XCAR (rest);
+             GCPRO1 (rest);
+             seq = Fchar_feature (make_char (ch), decomp_f, Qnil,
+                                  Qnil, Qnil);
+             UNGCPRO;
+             if ( !NILP (seq) )
+               break;
+             rest = XCDR (rest);
+           }
 
          if ( CONSP (seq) )
            {
@@ -6555,6 +6569,14 @@ and behaviors of various editing commands.
 Setting this to nil does not do anything.
 */ );
   enable_multibyte_characters = 1;
+
+#ifdef UTF2000
+  DEFVAR_LISP ("decomposition-feature-list",
+              &Vdecomposition_feature_list /*
+List of `=decomposition@FOO' feature to encode characters as IVS.
+*/ );
+  Vdecomposition_feature_list = Qnil;
+#endif
 }
 
 void