From 60dc655805a9dc6b926f5a7fa81d1e28dcd4e55c Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 31 Jan 2001 15:19:30 +0000 Subject: [PATCH] (Fwhere_is_internal): Use the first valid binding if no ascii binding is found (when firstonly is t). --- src/keymap.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/keymap.c b/src/keymap.c index f5b037ffa43..dea2515890b 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -2267,7 +2267,7 @@ indirect definition itself.") if (nomenus && NILP (noindirect) && NILP (keymap)) { Lisp_Object *defns; - int i, n; + int i, j, n; struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; /* Check heuristic-consistency of the cache. */ @@ -2302,12 +2302,17 @@ indirect definition itself.") the following can GC. */ GCPRO2 (definition, keymaps); result = Qnil; + j = -1; for (i = n - 1; i >= 0; --i) - if (EQ (shadow_lookup (keymaps, defns[i], Qnil), definition) - && ascii_sequence_p (defns[i])) - break; + if (EQ (shadow_lookup (keymaps, defns[i], Qnil), definition)) + { + if (ascii_sequence_p (defns[i])) + break; + else if (j < 0) + j = i; + } - result = i >= 0 ? defns[i] : Qnil; + result = i >= 0 ? defns[i] : (j >= 0 ? defns[j] : Qnil); UNGCPRO; } else -- 2.39.5