]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fdefine_key): If the key binding definition looks like an
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 22 Jul 2006 21:22:52 +0000 (21:22 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 22 Jul 2006 21:22:52 +0000 (21:22 +0000)
XEmacs-style key sequence, convert it to Emacs's format.

etc/NEWS
src/ChangeLog
src/keymap.c

index f06bee9badc06289e20e838c2482da09dff6cb51..4a2eaf4e2256868f8ba9f49c5694c06cf450146c 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -4617,6 +4617,8 @@ Lisp packages using many minor mode keymaps can now maintain their own
 keymap alist separate from `minor-mode-map-alist' by adding their
 keymap alist to this list.
 
+*** The definition of a key-binding passed to define-key can use XEmacs-style
+key-sequences, such as [(control a)].
 ** Abbrev changes:
 
 +++
index 628d5dba0a99a97a9c454a76cd9058ab1ea11ce8..10a525f8a3ffd407fcd57b95283ec7779921f55d 100644 (file)
@@ -1,3 +1,8 @@
+2006-07-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (Fdefine_key): If the key binding definition looks like an
+       XEmacs-style key sequence, convert it to Emacs's format.
+
 2006-07-22  Ralf Angeli  <angeli@caeruleus.net>
 
        * w32fns.c (w32_createwindow): If `left' and/or `top' frame
index 71fd5f03390a16cbc41ca7173b6439bfaa596b82..4871179c420f0644fd6b51d9a7d44bbeadb1e0f6 100644 (file)
@@ -1149,6 +1149,20 @@ binding KEY to DEF is added at the front of KEYMAP.  */)
 
   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)
     {