diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/print.c | 12 | ||||
| -rw-r--r-- | src/xdisp.c | 11 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/print.c b/src/print.c index 975675014d9..269d8f250e2 100644 --- a/src/print.c +++ b/src/print.c @@ -200,6 +200,13 @@ printchar_to_stream (unsigned int ch, FILE *stream) { Lisp_Object dv IF_LINT (= Qnil); ptrdiff_t i = 0, n = 1; + Lisp_Object coding_system = Vlocale_coding_system; + bool encode_p = false; + + if (!NILP (Vcoding_system_for_write)) + coding_system = Vcoding_system_for_write; + if (!NILP (coding_system)) + encode_p = true; if (CHAR_VALID_P (ch) && DISP_TABLE_P (Vstandard_display_table)) { @@ -228,8 +235,11 @@ printchar_to_stream (unsigned int ch, FILE *stream) unsigned char mbstr[MAX_MULTIBYTE_LENGTH]; int len = CHAR_STRING (ch, mbstr); Lisp_Object encoded_ch = - ENCODE_SYSTEM (make_multibyte_string ((char *) mbstr, 1, len)); + make_multibyte_string ((char *) mbstr, 1, len); + if (encode_p) + encoded_ch = code_convert_string_norecord (encoded_ch, + coding_system, true); fwrite (SSDATA (encoded_ch), 1, SBYTES (encoded_ch), stream); #ifdef WINDOWSNT if (print_output_debug_flag && stream == stderr) diff --git a/src/xdisp.c b/src/xdisp.c index b18bfd0d49d..ee748bd8680 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -10206,7 +10206,16 @@ message_to_stderr (Lisp_Object m) } if (STRINGP (m)) { - Lisp_Object s = ENCODE_SYSTEM (m); + Lisp_Object coding_system = Vlocale_coding_system; + Lisp_Object s; + + if (!NILP (Vcoding_system_for_write)) + coding_system = Vcoding_system_for_write; + if (!NILP (coding_system)) + s = code_convert_string_norecord (m, coding_system, true); + else + s = m; + fwrite (SDATA (s), SBYTES (s), 1, stderr); } if (!cursor_in_echo_area) |
