# HG changeset patch # User Richard M. Stallman # Date 916068606 0 # Node ID 157787e56b415b08945a62ba87861a894834cf5d # Parent 4307fe505e5f8459b4c209b6b1d26f212e17e102 (read_key_sequence): In key-translation-map and function-key-map, handle symbol with array as fn def. In function-key-map, handle symbol with keymap as fn def, and autoloaded definitions. diff -r 4307fe505e5f -r 157787e56b41 src/keyboard.c --- a/src/keyboard.c Mon Jan 11 15:27:08 1999 +0000 +++ b/src/keyboard.c Mon Jan 11 15:30:06 1999 +0000 @@ -7401,7 +7401,21 @@ fkey_next = fkey_map; fkey_next - = get_keyelt (access_keymap (fkey_next, key, 1, 0), 0); + = get_keyelt (access_keymap (fkey_next, key, 1, 0), 1); + + /* Handle symbol with autoload definition. */ + 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 + or an array. */ + if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) + && (!NILP (Farrayp (XSYMBOL (keytran_next)->function)) + || !NILP (Fkeymapp (XSYMBOL (keytran_next)->function)))) + keytran_next = XSYMBOL (keytran_next)->function; #if 0 /* I didn't turn this on, because it might cause trouble for the mapping of return into C-m and tab into C-i. */ @@ -7511,15 +7525,18 @@ keytran_next = get_keyelt (access_keymap (keytran_next, key, 1, 0), 1); + /* Handle symbol with autoload definition. */ 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. */ + /* Handle a symbol whose function definition is a keymap + or an array. */ if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) - && !NILP (Fkeymapp (XSYMBOL (keytran_next)->function))) + && (!NILP (Farrayp (XSYMBOL (keytran_next)->function)) + || !NILP (Fkeymapp (XSYMBOL (keytran_next)->function)))) keytran_next = XSYMBOL (keytran_next)->function; /* If the key translation map gives a function, not an