diff options
author | Richard M. Stallman <rms@gnu.org> | 1998-02-11 01:51:36 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1998-02-11 01:51:36 +0000 |
commit | e4b6f8e3fdbb743d4e8e170a402ae3c25234263e (patch) | |
tree | 2b7e59e8ac2bb4b2c37bb66b80c83abcc6c391e7 /src | |
parent | a249d3a05a82cc8f09ac4493e3e80b660af0ccb4 (diff) | |
download | emacs-e4b6f8e3fdbb743d4e8e170a402ae3c25234263e.tar.gz |
(describe_map_tree): Add the maps we have already
handled into SUB_SHADOWS.
Diffstat (limited to 'src')
-rw-r--r-- | src/keymap.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/keymap.c b/src/keymap.c index 4e8259fde2f..94188044d12 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -2386,7 +2386,7 @@ describe_map_tree (startmap, partial, shadow, prefix, title, nomenu, transl, 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 @@ describe_map_tree (startmap, partial, shadow, prefix, title, nomenu, transl, 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 @@ key binding\n\ 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); |