Mercurial > emacs
changeset 35781:ffdcf20f53f2
(Fwhere_is_internal): Use the first valid binding
if no ascii binding is found (when firstonly is t).
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 31 Jan 2001 15:19:30 +0000 |
parents | a4119c7b821f |
children | 061a65fa5a43 |
files | src/keymap.c |
diffstat | 1 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keymap.c Wed Jan 31 15:11:07 2001 +0000 +++ b/src/keymap.c Wed Jan 31 15:19:30 2001 +0000 @@ -2267,7 +2267,7 @@ 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 @@ 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; - - result = i >= 0 ? defns[i] : Qnil; + 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] : (j >= 0 ? defns[j] : Qnil); UNGCPRO; } else