]> git.eshelyaron.com Git - emacs.git/commitdiff
(where_is_internal): Don't erroneously return nil right after
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 11 Sep 2009 05:10:15 +0000 (05:10 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 11 Sep 2009 05:10:15 +0000 (05:10 +0000)
filling the cache.
(where_is_internal_1): Fix up typo.

src/ChangeLog
src/keymap.c

index cf9725332e801ac88424e70bcd62f6d4d7956b3d..de2c7c30f44eee51cad57ded7206a44f066e572e 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (where_is_internal): Don't erroneously return nil right after
+       filling the cache.
+       (where_is_internal_1): Fix up typo.
+
 2009-09-11  Glenn Morris  <rgm@gnu.org>
 
        * frame.c (Fx_parse_geometry): Unify the X and NS versions so that they
index 561b345396716519b7390dbfba4e70f7209c48f7..bcbeda72c8c7c6d4e67ac87dec5438c4f2bccb52 100644 (file)
@@ -2765,12 +2765,16 @@ where_is_internal (Lisp_Object definition, Lisp_Object keymaps,
     }
 
   if (nomenus && !noindirect)
-    /* Remember for which keymaps this cache was built.
-       We do it here (late) because we want to keep where_is_cache_keymaps
-       set to t while the cache isn't fully filled.  */
-    where_is_cache_keymaps = keymaps;
-
-  return data.sequences;
+    { /* Remember for which keymaps this cache was built.
+        We do it here (late) because we want to keep where_is_cache_keymaps
+        set to t while the cache isn't fully filled.  */
+      where_is_cache_keymaps = keymaps;
+      /* During cache-filling, data.sequences is not filled by
+        where_is_internal_1.  */
+      return Fgethash (definition, where_is_cache, Qnil);
+    }
+  else
+    return data.sequences;
 }
 
 static Lisp_Object Vwhere_is_preferred_modifier;
@@ -2973,7 +2977,7 @@ where_is_internal_1 (key, binding, args, data)
   Lisp_Object sequence;
 
   /* Search through indirections unless that's not wanted.  */
-  if (noindirect)
+  if (!noindirect)
     binding = get_keyelt (binding, 0);
 
   /* End this iteration if this element does not match