From d35e5c1ee08977e2a94d9b4b6280290dbda8a8f4 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 7 Jul 2009 06:25:20 +0000 Subject: [PATCH] (get_next_display_element): Decode it->c by charset_unibyte. (x_produce_glyphs): Likewise. --- src/xdisp.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index ffe1e9ede2e..a0ac755ffa6 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -5674,6 +5674,7 @@ get_next_display_element (it) if (success_p && it->dpvec == NULL) { Lisp_Object dv; + struct charset *unibyte = CHARSET_FROM_ID (charset_unibyte); if (it->dp && (dv = DISP_CHAR_VECTOR (it->dp, it->c), @@ -5728,7 +5729,7 @@ get_next_display_element (it) || it->c == 0xAD /* SOFT HYPHEN */))) : (it->c >= 127 && (! unibyte_display_via_language_environment - || (UNIBYTE_CHAR_HAS_MULTIBYTE_P (it->c))))))) + || (DECODE_CHAR (unibyte, it->c) <= 0xA0)))))) { /* IT->c is a control character which must be displayed either as '\003' or as `^C' where the '\\' and '^' @@ -21094,9 +21095,12 @@ x_produce_glyphs (it) { if (SINGLE_BYTE_CHAR_P (it->c) && unibyte_display_via_language_environment) - it->char_to_display = unibyte_char_to_multibyte (it->c); - if (! SINGLE_BYTE_CHAR_P (it->char_to_display)) { + struct charset *unibyte = CHARSET_FROM_ID (charset_unibyte); + + /* get_next_display_element assures that this decoding + never fails. */ + it->char_to_display = DECODE_CHAR (unibyte, it->c); it->multibyte_p = 1; it->face_id = FACE_FOR_CHAR (it->f, face, it->char_to_display, -1, Qnil); -- 2.39.2