]> git.eshelyaron.com Git - emacs.git/commitdiff
(read_key_sequence): Tell get_keyelt to look handle autoloads.
authorRichard M. Stallman <rms@gnu.org>
Wed, 6 Jan 1999 23:54:44 +0000 (23:54 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 6 Jan 1999 23:54:44 +0000 (23:54 +0000)
Handle symbols defined as keymaps, and autoloaded keymaps.

src/keyboard.c

index 7ba7f0a6319ee5d9dd2537fbce8620c91d090cbc..a8a620a4e538bf7ed85c249a9ae2115791cd7473 100644 (file)
@@ -7509,10 +7509,21 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
              keytran_next = keytran_map;
 
            keytran_next
-             = get_keyelt (access_keymap (keytran_next, key, 1, 0), 0);
+             = get_keyelt (access_keymap (keytran_next, key, 1, 0), 1);
 
+           if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next))
+               && CONSP (XSYMBOL (keytran_next)->function)
+               && EQ (XCONS (XSYMBOL (keytran_next)->function)->car, Qautoload))
+             do_autoload (XSYMBOL (keytran_next)->function,
+                          keytran_next);
+
+           /* Handle a symbol whose function definition is a keymap.  */
+           if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next))
+               && !NILP (Fkeymapp (XSYMBOL (keytran_next)->function)))
+             keytran_next = XSYMBOL (keytran_next)->function;
+           
            /* If the key translation map gives a function, not an
-              array, then call the function with no args and use
+              array, then call the function with one arg and use
               its value instead.  */
            if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next))
                && keytran_end == t)