changeset 20883:4aeabf3b8f98

(describe_map_tree): Add the maps we have already handled into SUB_SHADOWS.
author Richard M. Stallman <rms@gnu.org>
date Wed, 11 Feb 1998 01:51:36 +0000
parents 6566e48896f4
children 91f9c828fc1a
files src/keymap.c
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/keymap.c	Wed Feb 11 00:29:47 1998 +0000
+++ b/src/keymap.c	Wed Feb 11 01:51:36 1998 +0000
@@ -2386,7 +2386,7 @@
      int transl;
      int always_title;
 {
-  Lisp_Object maps, seen, sub_shadows;
+  Lisp_Object maps, orig_maps, seen, sub_shadows;
   struct gcpro gcpro1, gcpro2, gcpro3;
   int something = 0;
   char *key_heading
@@ -2394,7 +2394,7 @@
 key             binding\n\
 ---             -------\n";
 
-  maps = Faccessible_keymaps (startmap, prefix);
+  orig_maps = maps = Faccessible_keymaps (startmap, prefix);
   seen = Qnil;
   sub_shadows = Qnil;
   GCPRO3 (maps, seen, sub_shadows);
@@ -2475,7 +2475,16 @@
 	    sub_shadows = Fcons (shmap, sub_shadows);
 	}
 
-      describe_map (Fcdr (elt), Fcar (elt),
+      /* Maps we have already listed in this loop shadow this map.  */
+      for (tail = orig_maps; ! EQ (tail, maps); tail = XCDR (tail))
+	{
+	  Lisp_Object tem;
+	  tem = Fequal (Fcar (XCAR (tail)), prefix);
+	  if (! NILP (tem))
+	    sub_shadows = Fcons (XCDR (XCAR (tail)), sub_shadows);
+	}
+
+      describe_map (Fcdr (elt), prefix,
 		    transl ? describe_translation : describe_command,
 		    partial, sub_shadows, &seen, nomenu);