diff src/keymap.c @ 80869:f526513aec92

(Fdefine_key, Flookup_key): Only do the 0x80->meta_modifier mapping for unibyte strings.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 07 May 2007 15:41:37 +0000
parents 7ecfd3e438e0
children c49e1e480880
line wrap: on
line diff
--- a/src/keymap.c	Mon May 07 08:05:55 2007 +0000
+++ b/src/keymap.c	Mon May 07 15:41:37 2007 +0000
@@ -1156,7 +1156,8 @@
   if (SYMBOLP (def) && !EQ (Vdefine_key_rebound_commands, Qt))
     Vdefine_key_rebound_commands = Fcons (def, Vdefine_key_rebound_commands);
 
-  meta_bit = VECTORP (key) ? meta_modifier : 0x80;
+  meta_bit = (VECTORP (key) || STRINGP (key) && STRING_MULTIBYTE (key)
+	      ? meta_modifier : 0x80);
 
   if (VECTORP (def) && ASIZE (def) > 0 && CONSP (AREF (def, 0)))
     { /* DEF is apparently an XEmacs-style keyboard macro.  */
@@ -1312,7 +1313,7 @@
 	c = Fevent_convert_list (c);
 
       /* Turn the 8th bit of string chars into a meta modifier.  */
-      if (INTEGERP (c) && XINT (c) & 0x80 && STRINGP (key))
+      if (STRINGP (key) && XINT (c) & 0x8 && !STRING_MULTIBYTE (key))
 	XSETINT (c, (XINT (c) | meta_modifier) & ~0x80);
 
       /* Allow string since binding for `menu-bar-select-buffer'