changeset 20888:98172ad9f511

(printchar): When outputting to echo area, update message_enable_multibyte, and convert previous text from unibyte to multibyte if necessary.
author Richard M. Stallman <rms@gnu.org>
date Thu, 12 Feb 1998 05:18:59 +0000
parents bb0f5fde5973
children 454423099620
files src/print.c
diffstat 1 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/print.c	Thu Feb 12 03:10:53 1998 +0000
+++ b/src/print.c	Thu Feb 12 05:18:59 1998 +0000
@@ -384,6 +384,25 @@
 	}
 
       message_dolog (str, len, 0, len > 1);
+
+      /* Convert message to multibyte if we are now adding multibyte text.  */
+      if (! NILP (current_buffer->enable_multibyte_characters)
+	  && ! message_enable_multibyte
+	  && printbufidx > 0)
+	{
+	  int size = count_size_as_multibyte (FRAME_MESSAGE_BUF (mini_frame),
+					      printbufidx);
+	  unsigned char *tembuf = (unsigned char *) alloca (size + 1);
+	  copy_text (FRAME_MESSAGE_BUF (mini_frame), tembuf, printbufidx,
+		     0, 1);
+	  printbufidx = size;
+	  if (printbufidx > FRAME_MESSAGE_BUF_SIZE (mini_frame))
+	    printbufidx = FRAME_MESSAGE_BUF_SIZE (mini_frame);
+	  bcopy (tembuf, FRAME_MESSAGE_BUF (mini_frame), printbufidx);
+	}
+      message_enable_multibyte
+	= ! NILP (current_buffer->enable_multibyte_characters);
+
       if (printbufidx < FRAME_MESSAGE_BUF_SIZE (mini_frame) - len)
 	bcopy (str, &FRAME_MESSAGE_BUF (mini_frame)[printbufidx], len),
 	printbufidx += len;