From bee27b4de3823c2171f36a32ce33b8ff62f0bd1b Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 1 Apr 2007 15:58:29 +0000 Subject: [PATCH] (where_is_internal): Scan provided keymaps for command remappings rather than calling Fcommand_remapping. --- src/keymap.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/keymap.c b/src/keymap.c index 731c42dd9d4..501f4683398 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -2579,15 +2579,6 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap) /* 1 means ignore all menu bindings entirely. */ int nomenus = !NILP (firstonly) && !EQ (firstonly, Qnon_ascii); - /* If this command is remapped, then it has no key bindings - of its own. */ - if (NILP (no_remap) && SYMBOLP (definition)) - { - Lisp_Object tem; - if (tem = Fcommand_remapping (definition, Qnil), !NILP (tem)) - return Qnil; - } - found = keymaps; while (CONSP (found)) { @@ -2601,6 +2592,22 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap) found = Qnil; sequences = Qnil; + /* If this command is remapped, then it has no key bindings + of its own. */ + if (NILP (no_remap) && SYMBOLP (definition)) + { + Lisp_Object kmaps, map, remap; + + for (kmaps = maps; !NILP (kmaps); kmaps = Fcdr (kmaps)) + if (map = Fcdr (Fcar (kmaps)), KEYMAPP (map)) + { + ASET (command_remapping_vector, 1, definition); + remap = Flookup_key (map, command_remapping_vector, Qnil); + if (!NILP (remap) && !INTEGERP (remap)) + RETURN_UNGCPRO (Qnil); + } + } + for (; !NILP (maps); maps = Fcdr (maps)) { /* Key sequence to reach map, and the map that it reaches */ -- 2.39.5