]> git.eshelyaron.com Git - emacs.git/commitdiff
(printchar): When outputting a multibyte character to
authorKenichi Handa <handa@m17n.org>
Tue, 15 Dec 1998 04:35:38 +0000 (04:35 +0000)
committerKenichi Handa <handa@m17n.org>
Tue, 15 Dec 1998 04:35:38 +0000 (04:35 +0000)
echo area, always set message_enable_multibyte to 1.

src/print.c

index 3723c79b6ddd85bdd9c2e3b6b8248e198c1d70a4..b8be2771944344e306820ef94faab1bcf7d55b2f 100644 (file)
@@ -417,23 +417,29 @@ printchar (ch, fun)
 
       /* Convert message to multibyte if we are now adding multibyte text.  */
       if (! NILP (current_buffer->enable_multibyte_characters)
-         && ! message_enable_multibyte
-         && printbufidx > 0)
+         && len > 1
+         && ! message_enable_multibyte)
        {
-         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))
+         /* If we have already had some message text in the messsage
+             buffer, we must convert it to multibyte.  */
+         if (printbufidx > 0)
            {
-             printbufidx = FRAME_MESSAGE_BUF_SIZE (mini_frame);
-             /* Rewind incomplete multi-byte form.  */
-             while (printbufidx > 0 && tembuf[printbufidx] >= 0xA0)
-               printbufidx--;
+             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);
+                 /* Rewind incomplete multi-byte form.  */
+                 while (printbufidx > 0 && tembuf[printbufidx] >= 0xA0)
+                   printbufidx--;
+               }
+             bcopy (tembuf, FRAME_MESSAGE_BUF (mini_frame), printbufidx);
            }
-         bcopy (tembuf, FRAME_MESSAGE_BUF (mini_frame), printbufidx);
          message_enable_multibyte = 1;
        }