diff options
author | Richard M. Stallman <rms@gnu.org> | 1998-06-24 18:32:53 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1998-06-24 18:32:53 +0000 |
commit | 8a2ab0c6915d134196ed5738784d0bff4dc83bce (patch) | |
tree | 598e82be9b98cbdef486dc9b1a5b4d547d08e493 /src/print.c | |
parent | 3dd00fc37c5e6c0851747638a293626e4698dfb7 (diff) | |
download | emacs-8a2ab0c6915d134196ed5738784d0bff4dc83bce.tar.gz |
(PRINTFINISH): Convert text to unibyte before
inserting in a unibyte buffer.
Diffstat (limited to 'src/print.c')
-rw-r--r-- | src/print.c | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/src/print.c b/src/print.c index 8df254c4059..9cb8b1b960c 100644 --- a/src/print.c +++ b/src/print.c @@ -280,26 +280,39 @@ glyph_to_str_cpy (glyphs, str) if (!CONSP (Vprint_gensym)) \ Vprint_gensym_alist = Qnil -#define PRINTFINISH \ - if (NILP (printcharfun)) \ - insert_1_both (print_buffer, print_buffer_pos, \ - print_buffer_pos_byte, 0, 1, 0); \ - if (free_print_buffer) \ - { \ - xfree (print_buffer); \ - print_buffer = 0; \ - } \ - unbind_to (specpdl_count, Qnil); \ - if (MARKERP (original)) \ - set_marker_both (original, Qnil, PT, PT_BYTE); \ - if (old_point >= 0) \ - SET_PT_BOTH (old_point + (old_point >= start_point \ - ? PT - start_point : 0), \ +#define PRINTFINISH \ + if (NILP (printcharfun)) \ + { \ + if (print_buffer_pos != print_buffer_pos_byte \ + && NILP (current_buffer->enable_multibyte_characters)) \ + { \ + unsigned char *temp \ + = (unsigned char *) alloca (print_buffer_pos + 1); \ + copy_text (print_buffer, temp, print_buffer_pos_byte, \ + 1, 0); \ + insert_1_both (temp, print_buffer_pos, \ + print_buffer_pos, 0, 1, 0); \ + } \ + else \ + insert_1_both (print_buffer, print_buffer_pos, \ + print_buffer_pos_byte, 0, 1, 0); \ + } \ + if (free_print_buffer) \ + { \ + xfree (print_buffer); \ + print_buffer = 0; \ + } \ + unbind_to (specpdl_count, Qnil); \ + if (MARKERP (original)) \ + set_marker_both (original, Qnil, PT, PT_BYTE); \ + if (old_point >= 0) \ + SET_PT_BOTH (old_point + (old_point >= start_point \ + ? PT - start_point : 0), \ old_point_byte + (old_point_byte >= start_point_byte \ ? PT_BYTE - start_point_byte : 0)); \ - if (old != current_buffer) \ - set_buffer_internal (old); \ - if (!CONSP (Vprint_gensym)) \ + if (old != current_buffer) \ + set_buffer_internal (old); \ + if (!CONSP (Vprint_gensym)) \ Vprint_gensym_alist = Qnil #define PRINTCHAR(ch) printchar (ch, printcharfun) |