diff src/data.c @ 90996:f55f9811f5d7

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 824-831) - Update from CVS - Merge from emacs--rel--22 * emacs--rel--22 (patch 70-74) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-238
author Miles Bader <miles@gnu.org>
date Fri, 27 Jul 2007 10:52:18 +0000
parents 492971a3f31f b98604865ea0
children 57f4ffc03d13
line wrap: on
line diff
--- a/src/data.c	Thu Jul 26 11:44:52 2007 +0000
+++ b/src/data.c	Fri Jul 27 10:52:18 2007 +0000
@@ -6,7 +6,7 @@
 
 GNU Emacs is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -750,7 +750,22 @@
      (cmd)
      Lisp_Object cmd;
 {
-  Lisp_Object fun = indirect_function (cmd);
+  Lisp_Object fun = indirect_function (cmd); /* Check cycles.  */
+  
+  if (NILP (fun) || EQ (fun, Qunbound))
+    return Qnil;
+
+  /* Use an `interactive-form' property if present, analogous to the
+     function-documentation property. */
+  fun = cmd;
+  while (SYMBOLP (fun))
+    {
+      Lisp_Object tmp = Fget (fun, intern ("interactive-form"));
+      if (!NILP (tmp))
+	return tmp;
+      else
+	fun = Fsymbol_function (fun);
+    }
 
   if (SUBRP (fun))
     {