else
{
int i, len;
+ int cvt;
/* Check the type of last-kbd-macro in case Lisp code changed it. */
if (!STRINGP (current_kboard->Vlast_kbd_macro)
= (Lisp_Object *)xrealloc (current_kboard->kbd_macro_buffer,
(len + 30) * sizeof (Lisp_Object));
}
+
+ /* Must convert meta modifier when copying string to vector. */
+ cvt = STRINGP (current_kboard->Vlast_kbd_macro);
for (i = 0; i < len; i++)
- current_kboard->kbd_macro_buffer[i]
- = Faref (current_kboard->Vlast_kbd_macro, make_number (i));
+ {
+ Lisp_Object c;
+ c = Faref (current_kboard->Vlast_kbd_macro, make_number (i));
+ if (cvt && NATNUMP (c) && (XFASTINT (c) & 0x80))
+ XSETFASTINT (c, CHAR_META | (XFASTINT (c) & ~0x80));
+ current_kboard->kbd_macro_buffer[i] = c;
+ }
current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer + len;
current_kboard->kbd_macro_end = current_kboard->kbd_macro_ptr;
DEFVAR_KBOARD ("last-kbd-macro", Vlast_kbd_macro,
doc: /* Last kbd macro defined, as a string or vector; nil if none defined. */);
}
+
+/* arch-tag: d293fcc9-2266-4163-9198-7fa0de12ec9e
+ (do not change this comment) */