From c312038525e6c4680377562329ffc0ec63763962 Mon Sep 17 00:00:00 2001 From: tomo Date: Tue, 20 Aug 2002 08:34:03 +0000 Subject: [PATCH] (decode_add_er_char): Support isolated-chars. (char_encode_as_entity_reference): Likewise. --- src/text-coding.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/text-coding.c b/src/text-coding.c index 002de1f..8f4595b 100644 --- a/src/text-coding.c +++ b/src/text-coding.c @@ -3218,12 +3218,20 @@ decode_add_er_char (struct decoding_stream *str, Emchar c, Lisp_Object ret; Lisp_Object pat; Lisp_Object ccs; + Lisp_Object char_type; int base; while (!NILP (rest)) { cell = Fcar (rest); ccs = Fcar (cell); + if (CONSP (ccs)) + { + char_type = XCDR (ccs); + ccs = XCAR (ccs); + } + else + char_type = Qnil; if (NILP (ccs = Ffind_charset (ccs))) continue; @@ -3266,8 +3274,12 @@ decode_add_er_char (struct decoding_stream *str, Emchar c, Fmatch_beginning (make_int (1)), Fmatch_end (make_int (1))), make_int (base))); + Emchar chr + = NILP (char_type) + ? DECODE_CHAR (ccs, code) + : decode_builtin_char (ccs, code); - DECODE_ADD_UCS_CHAR (DECODE_CHAR (ccs, code), dst); + DECODE_ADD_UCS_CHAR (chr, dst); goto decoded; } rest = Fcdr (rest); @@ -3309,6 +3321,7 @@ char_encode_as_entity_reference (Emchar ch, char* buf) Lisp_Object rest = Vcoded_charset_entity_reference_alist; Lisp_Object cell; Lisp_Object ccs; + Lisp_Object char_type; int format_columns, idx; char format[18]; @@ -3316,11 +3329,20 @@ char_encode_as_entity_reference (Emchar ch, char* buf) { cell = Fcar (rest); ccs = Fcar (cell); + if (CONSP (ccs)) + { + char_type = XCDR (ccs); + ccs = XCAR (ccs); + } + else + char_type = Qnil; if (!NILP (ccs = Ffind_charset (ccs))) { int code_point = charset_code_point (ccs, ch); - if ( code_point >= 0 ) + if ( (code_point >= 0) + && (NILP (char_type) + || DECODE_CHAR (ccs, code_point) != ch) ) { Lisp_Object ret; -- 1.7.10.4