Mercurial > emacs
changeset 32739:5ce157b2eaa9
(fix_submap_inheritance): Don't do anything if parent_entry
is nil: since we go to the end of submap anyway, we'd end up
setting nil to nil.
(access_keymap): Don't use KEYMAPP on meta_map since KEYMAPP
doesn't obey autoload.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sun, 22 Oct 2000 04:48:48 +0000 |
parents | 0b777485ae55 |
children | fd9781e17343 |
files | src/keymap.c |
diffstat | 1 files changed, 17 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keymap.c Sun Oct 22 04:21:36 2000 +0000 +++ b/src/keymap.c Sun Oct 22 04:48:48 2000 +0000 @@ -419,9 +419,9 @@ parent_entry = Qnil; /* If MAP's parent has something other than a keymap, - our own submap shadows it completely, so use nil as SUBMAP's parent. */ + our own submap shadows it completely. */ if (! KEYMAPP (parent_entry)) - parent_entry = Qnil; + return; if (! EQ (parent_entry, submap)) { @@ -430,12 +430,16 @@ while (1) { Lisp_Object tem; + tem = Fkeymap_parent (submap_parent); - if (keymap_memberp (tem, parent_entry)) - /* Fset_keymap_parent could create a cycle. */ - return; - if (KEYMAPP (tem)) - submap_parent = tem; + + if (KEYMAPP (tem)) + { + if (keymap_memberp (tem, parent_entry)) + /* Fset_keymap_parent could create a cycle. */ + return; + submap_parent = tem; + } else break; } @@ -483,15 +487,15 @@ /* Handle the special meta -> esc mapping. */ if (INTEGERP (idx) && XUINT (idx) & meta_modifier) { - Lisp_Object meta_map; - /* See if there is a meta-map. If there's none, there is no binding for IDX, unless a default binding exists in MAP. */ - meta_map = access_keymap (map, meta_prefix_char, t_ok, noinherit, - autoload); - if (KEYMAPP (meta_map)) + Lisp_Object meta_map = + get_keymap_1 (access_keymap + (map, meta_prefix_char, t_ok, noinherit, autoload), + 0, autoload); + if (!NILP (meta_map)) { - map = get_keymap_1 (meta_map, 0, autoload); + map = meta_map; idx = make_number (XUINT (idx) & ~meta_modifier); } else if (t_ok)