]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fsingle_key_description): Create a multibyte string
authorGerd Moellmann <gerd@gnu.org>
Mon, 28 May 2001 16:21:41 +0000 (16:21 +0000)
committerGerd Moellmann <gerd@gnu.org>
Mon, 28 May 2001 16:21:41 +0000 (16:21 +0000)
only if necessary.

src/ChangeLog
src/keymap.c

index 2bf591053df7f6349af79b89355f54e98d3637d0..32b377031a28c4be905f4601cf8f50a23ec75460 100644 (file)
@@ -1,5 +1,12 @@
 2001-05-28  Gerd Moellmann  <gerd@gnu.org>
 
+       * xmenu.c (xmenu_show) [!HAVE_MULTILINGUAL_MENU]: Don't overwrite 
+       an item's name with its key description in case the description
+       is a multibyte string.
+
+       * keymap.c (Fsingle_key_description): Create a multibyte string
+       only if necessary.
+
        * macros.c (Fstart_kbd_macro): Doc fix.
 
        * xterm.c (cursor_in_mouse_face_p): New function.
index a1f0de1c09afbfc59e5db30dd08bcf973261bda8..f96c109c9cd2a188cc879d6dbf3f3a07e92a21f9 100644 (file)
@@ -1959,14 +1959,18 @@ around function keys and event symbols.")
        }
       else
        {
-         char tem[KEY_DESCRIPTION_SIZE];
-         int len;
-
-         *push_key_description (XUINT (key), tem, 1) = 0;
-         len = strlen (tem);
-         return make_multibyte_string (tem,
-                                       multibyte_chars_in_text (tem, len),
-                                       len);
+         char tem[KEY_DESCRIPTION_SIZE], *end;
+         int nbytes, nchars;
+         Lisp_Object string;
+
+         end = push_key_description (XUINT (key), tem, 1);
+         nbytes = end - tem;
+         nchars = multibyte_chars_in_text (tem, nbytes);
+         if (nchars == nbytes)
+           string = build_string (tem);
+         else
+           string = make_multibyte_string (tem, nchars, nbytes);
+         return string;
        }
     }
   else if (SYMBOLP (key))      /* Function key or event-symbol */