Mercurial > emacs
diff src/keymap.c @ 29282:59f2b30d577b
Include intervals.h.
(Fkey_binding, Fwhere_is_internal): Deal with `keymap' property.
author | Dave Love <fx@gnu.org> |
---|---|
date | Mon, 29 May 2000 11:54:51 +0000 |
parents | b9565b4bcdf8 |
children | 31099bb76b6e |
line wrap: on
line diff
--- 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)