From 1cba3ca6672037dc9a122d27ecd7bb3987d9d09b Mon Sep 17 00:00:00 2001 From: tomo Date: Fri, 18 Feb 2011 23:45:21 +0000 Subject: [PATCH] (Vdecomposition_feature_list): New variable when UTF2000 is defined. (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 | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/text-coding.c b/src/text-coding.c index 09afa27..6485b64 100644 --- a/src/text-coding.c +++ b/src/text-coding.c @@ -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 -- 1.7.10.4