Mercurial > emacs
changeset 103738:851a95a239f8
(get_next_display_element): Decode it->c by charset_unibyte.
(x_produce_glyphs): Likewise.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 07 Jul 2009 06:25:20 +0000 |
parents | f016828ad15e |
children | e949a1712db6 |
files | src/xdisp.c |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Mon Jul 06 14:16:52 2009 +0000 +++ b/src/xdisp.c Tue Jul 07 06:25:20 2009 +0000 @@ -5674,6 +5674,7 @@ 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 @@ || 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 @@ { 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);