# HG changeset patch # User Dave Love # Date 959601291 0 # Node ID 59f2b30d577b18891256fd64a690a580fa8ca75e # Parent e27af8cf09bd99fa37c208ec9c300b1ace01c13b Include intervals.h. (Fkey_binding, Fwhere_is_internal): Deal with `keymap' property. diff -r e27af8cf09bd -r 59f2b30d577b src/keymap.c --- a/src/keymap.c Mon May 29 11:51:34 2000 +0000 +++ b/src/keymap.c Mon May 29 11:54:51 2000 +0000 @@ -30,6 +30,7 @@ #include "termhooks.h" #include "blockinput.h" #include "puresize.h" +#include "intervals.h" #define min(a, b) ((a) < (b) ? (a) : (b)) @@ -1285,7 +1286,15 @@ RETURN_UNGCPRO (value); } - local = get_local_map (PT, current_buffer); + local = get_local_map (PT, current_buffer, keymap); + if (! NILP (local)) + { + value = Flookup_key (local, key, accept_default); + if (! NILP (value) && !INTEGERP (value)) + RETURN_UNGCPRO (value); + } + + local = get_local_map (PT, current_buffer, local_map); if (! NILP (local)) { @@ -2068,14 +2077,25 @@ shadowed bindings. */ keymap1 = keymap; if (! keymap_specified) - keymap1 = get_local_map (PT, current_buffer); + keymap1 = get_local_map (PT, current_buffer, keymap); if (!NILP (keymap1)) maps = nconc2 (Faccessible_keymaps (get_keymap (keymap1), Qnil), Faccessible_keymaps (get_keymap (current_global_map), Qnil)); else - maps = Faccessible_keymaps (get_keymap (current_global_map), Qnil); + { + keymap1 = keymap; + if (! keymap_specified) + keymap1 = get_local_map (PT, current_buffer, local_map); + + if (!NILP (keymap1)) + maps = nconc2 (Faccessible_keymaps (get_keymap (keymap1), Qnil), + Faccessible_keymaps (get_keymap (current_global_map), + Qnil)); + else + maps = Faccessible_keymaps (get_keymap (current_global_map), Qnil); + } /* Put the minor mode keymaps on the front. */ if (! keymap_specified)