diff src/doc.c @ 90105:7e3f621f1dd4

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-15 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-95 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-96 Move Gnus images into etc/images * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-97 - miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-105 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-14 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-15 Update from CVS: lisp/imap.el (imap-log): Doc fix. * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-16 Merge from emacs--cvs-trunk--0
author Miles Bader <miles@gnu.org>
date Fri, 18 Feb 2005 00:41:50 +0000
parents cb7f41387eb3 42e18861b7b8
children 29e773288013
line wrap: on
line diff
--- a/src/doc.c	Mon Feb 14 03:40:07 2005 +0000
+++ b/src/doc.c	Fri Feb 18 00:41:50 2005 +0000
@@ -882,6 +882,9 @@
 	{
 	  struct buffer *oldbuf;
 	  int start_idx;
+	  /* This is for computing the SHADOWS arg for describe_map_tree.  */
+	  Lisp_Object active_maps = Fcurrent_active_maps (Qnil);
+	  Lisp_Object earlier_maps;
 
 	  changed = 1;
 	  strp += 2;		/* skip \{ or \< */
@@ -932,7 +935,13 @@
 	  else if (start[-1] == '<')
 	    keymap = tem;
 	  else
-	    describe_map_tree (tem, 1, Qnil, Qnil, (char *)0, 1, 0, 0);
+	    {
+	      /* Get the list of active keymaps that precede this one.
+		 If this one's not active, get nil.  */
+	      earlier_maps = Fcdr (Fmemq (tem, Freverse (active_maps)));
+	      describe_map_tree (tem, 1, Fnreverse (earlier_maps),
+				 Qnil, (char *)0, 1, 0, 0, 1);
+	    }
 	  tem = Fbuffer_string ();
 	  Ferase_buffer ();
 	  set_buffer_internal (oldbuf);