]> git.eshelyaron.com Git - emacs.git/commitdiff
(printchar): When outputting to echo area,
authorRichard M. Stallman <rms@gnu.org>
Thu, 12 Feb 1998 05:18:59 +0000 (05:18 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 12 Feb 1998 05:18:59 +0000 (05:18 +0000)
update message_enable_multibyte, and convert previous text
from unibyte to multibyte if necessary.

src/print.c

index f4b10c49770227f096d43cb658e7d6879d7eccda..6760af3298f5ba929dc6af98e4bfaf80b914f8f1 100644 (file)
@@ -384,6 +384,25 @@ printchar (ch, fun)
        }
 
       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;