diff options
| author | Richard M. Stallman | 1999-01-11 15:30:06 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1999-01-11 15:30:06 +0000 |
| commit | c700c260e6ac76dc99449dfc3e4c371b7863f1a1 (patch) | |
| tree | 774cb6bf087ff80e90d69a4c30c33f4c1acbacb4 /src | |
| parent | bbd25f47ef6f4c929e70cd133c7e855fa77435bb (diff) | |
| download | emacs-c700c260e6ac76dc99449dfc3e4c371b7863f1a1.tar.gz emacs-c700c260e6ac76dc99449dfc3e4c371b7863f1a1.zip | |
(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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/keyboard.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index a8a620a4e53..899f83b50f1 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -7401,7 +7401,21 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last, | |||
| 7401 | fkey_next = fkey_map; | 7401 | fkey_next = fkey_map; |
| 7402 | 7402 | ||
| 7403 | fkey_next | 7403 | fkey_next |
| 7404 | = get_keyelt (access_keymap (fkey_next, key, 1, 0), 0); | 7404 | = get_keyelt (access_keymap (fkey_next, key, 1, 0), 1); |
| 7405 | |||
| 7406 | /* Handle symbol with autoload definition. */ | ||
| 7407 | if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) | ||
| 7408 | && CONSP (XSYMBOL (keytran_next)->function) | ||
| 7409 | && EQ (XCONS (XSYMBOL (keytran_next)->function)->car, Qautoload)) | ||
| 7410 | do_autoload (XSYMBOL (keytran_next)->function, | ||
| 7411 | keytran_next); | ||
| 7412 | |||
| 7413 | /* Handle a symbol whose function definition is a keymap | ||
| 7414 | or an array. */ | ||
| 7415 | if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) | ||
| 7416 | && (!NILP (Farrayp (XSYMBOL (keytran_next)->function)) | ||
| 7417 | || !NILP (Fkeymapp (XSYMBOL (keytran_next)->function)))) | ||
| 7418 | keytran_next = XSYMBOL (keytran_next)->function; | ||
| 7405 | 7419 | ||
| 7406 | #if 0 /* I didn't turn this on, because it might cause trouble | 7420 | #if 0 /* I didn't turn this on, because it might cause trouble |
| 7407 | for the mapping of return into C-m and tab into C-i. */ | 7421 | for the mapping of return into C-m and tab into C-i. */ |
| @@ -7511,15 +7525,18 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last, | |||
| 7511 | keytran_next | 7525 | keytran_next |
| 7512 | = get_keyelt (access_keymap (keytran_next, key, 1, 0), 1); | 7526 | = get_keyelt (access_keymap (keytran_next, key, 1, 0), 1); |
| 7513 | 7527 | ||
| 7528 | /* Handle symbol with autoload definition. */ | ||
| 7514 | if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) | 7529 | if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) |
| 7515 | && CONSP (XSYMBOL (keytran_next)->function) | 7530 | && CONSP (XSYMBOL (keytran_next)->function) |
| 7516 | && EQ (XCONS (XSYMBOL (keytran_next)->function)->car, Qautoload)) | 7531 | && EQ (XCONS (XSYMBOL (keytran_next)->function)->car, Qautoload)) |
| 7517 | do_autoload (XSYMBOL (keytran_next)->function, | 7532 | do_autoload (XSYMBOL (keytran_next)->function, |
| 7518 | keytran_next); | 7533 | keytran_next); |
| 7519 | 7534 | ||
| 7520 | /* Handle a symbol whose function definition is a keymap. */ | 7535 | /* Handle a symbol whose function definition is a keymap |
| 7536 | or an array. */ | ||
| 7521 | if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) | 7537 | if (SYMBOLP (keytran_next) && ! NILP (Ffboundp (keytran_next)) |
| 7522 | && !NILP (Fkeymapp (XSYMBOL (keytran_next)->function))) | 7538 | && (!NILP (Farrayp (XSYMBOL (keytran_next)->function)) |
| 7539 | || !NILP (Fkeymapp (XSYMBOL (keytran_next)->function)))) | ||
| 7523 | keytran_next = XSYMBOL (keytran_next)->function; | 7540 | keytran_next = XSYMBOL (keytran_next)->function; |
| 7524 | 7541 | ||
| 7525 | /* If the key translation map gives a function, not an | 7542 | /* If the key translation map gives a function, not an |