diff src/keymap.c @ 72074:91ea8d22ef60

(Fdefine_key): If the key binding definition looks like an XEmacs-style key sequence, convert it to Emacs's format.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 22 Jul 2006 21:22:52 +0000
parents df96acbe2970
children 64e86769392f 02e39decdc84 858cb33ae39d
line wrap: on
line diff
--- a/src/keymap.c	Sat Jul 22 13:56:19 2006 +0000
+++ b/src/keymap.c	Sat Jul 22 21:22:52 2006 +0000
@@ -1149,6 +1149,20 @@
 
   meta_bit = VECTORP (key) ? meta_modifier : 0x80;
 
+  if (VECTORP (def) && ASIZE (def) > 0 && CONSP (AREF (def, make_number (0))))
+    { /* DEF is apparently an XEmacs-style keyboard macro.  */
+      Lisp_Object tmp = Fmake_vector (make_number (ASIZE (def)), Qnil);
+      int i = ASIZE (def);
+      while (--i >= 0)
+	{
+	  Lisp_Object c = AREF (def, i);
+	  if (CONSP (c) && lucid_event_type_list_p (c))
+	    c = Fevent_convert_list (c);
+	  ASET (tmp, i, c);
+	}
+      def = tmp;
+    }
+
   idx = 0;
   while (1)
     {