Diff of /standards.xmlf [9e7c20] .. [c13f92] Maximize Restore

  Switch to side-by-side view

--- a/standards.xmlf
+++ b/standards.xmlf
@@ -125,7 +125,7 @@
      </row>
      <row>
       <entry><constant>lambda-list-keywords</constant></entry>
-      <entry><literal>(&optional; &rest; &keys; &allow-other-keys; &aux;
+      <entry><literal>(&optional; &rest; &key; &allow-other-keys; &aux;
       &whole; &environment; &body;)</literal></entry>
      </row>
     </tbody>
@@ -1049,6 +1049,134 @@
   </tgroup>
  </table>
 </chapter>
+
+<chapter id="ansi.environment">
+ <title>Environment</title>
+
+ <section id="ansi.environment.dict">
+  <title>Dictionary</title>
+
+  <refentry id="ansi.environment.trace">
+   <refnamediv>
+    <refname><function>trace</function></refname>
+    <refpurpose>Follow execution of functions</refpurpose>
+   </refnamediv>
+
+   <refsynopsisdiv>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>trace</funcdef>
+      <paramdef><parameter>function-name</parameter>*</paramdef>
+     </funcprototype>
+    </funcsynopsis>
+    <variablelist>
+     <varlistentry>
+      <term><replaceable>function-name</replaceable></term>
+      <listitem><para>
+       <synopsis>{<replaceable>symbol</replaceable> | (<replaceable>symbol</replaceable> [<replaceable>option</replaceable> <replaceable>form</replaceable>]*)}</synopsis>
+      </para></listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><replaceable>symbol</replaceable></term>
+      <listitem><para>A symbol which is bound to a function in the global
+      environment. Not evaluated.</para></listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><replaceable>option</replaceable></term>
+      <listitem><para>One of <symbol>:BREAK</symbol>,
+      <symbol>:BREAK-AFTER</symbol>, <symbol>:COND-BEFORE</symbol>,
+      <symbol>:COND-AFTER</symbol>, <symbol>:COND</symbol>,
+      <symbol>:PRINT</symbol>, <symbol>:PRINT-AFTER</symbol>,
+      <symbol>:STEP</symbol></para></listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><replaceable>form</replaceable></term>
+      <listitem><para>A lisp form evaluated in an special
+      environment.</para></listitem>
+     </varlistentry>
+     <varlistentry>
+      <term>returns</term>
+      <listitem><para>List of symbols with traced functions.</para></listitem>
+     </varlistentry>
+    </variablelist>
+   </refsynopsisdiv>
+
+   <refsect1>
+    <title>Macro</title>
+
+    <para>Causes one or more functions to be traced. Each
+    <replaceable>function-name</replaceable> can be a symbol which is bound to
+    a function, or a list containing that symbol plus additional options. If
+    the function bound to that symbol is called, information about the
+    argumetns and output of this function will be printed. Trace options will
+    modify the amount of information and when it is printed.</para>
+
+    <para>Not that if the function is called from another function compiled in
+    the same file, tracing might not be enabled. If this is the case, to
+    enable tracing, recompile the caller with a <literal>notinline</literal>
+    declaration for the called function.</para>
+
+    <para><function>trace</function> returns a name list of those functions
+    that were traced by the call to trace.  If no
+    <replaceable>function-name</replaceable> is given, <literal>trace</literal>
+    simply returns a name list of all the currently traced functions.</para>
+
+    <para>Trace options cause the normal printout to be suppressed, or cause
+    extra information to be printed. Each option is a pair of an option keyword
+    and a value form. If an already traced function is traced again, any new
+    options replace the old options and a warning might be printed. The lisp
+    <replaceable>form</replaceable> accompanying the option is evaluated in an
+    environment where <replaceable>sys::arglist</replaceable> is contains the
+    list of arguments to the function.</para>
+
+    <para>The following options are defined:</para>
+    <variablelist>
+     <varlistentry>
+      <term><symbol>:cond</symbol></term>
+      <term><symbol>:cond-before</symbol></term>
+      <term><symbol>:cond-after</symbol></term>
+      <listitem>
+       <para>If <symbol>:cond-before</symbol> is specified, then
+       <function>trace</function> does nothing unless
+       <replaceable>form</replaceable> evaluates to true at the time of the
+       call. <symbol>:cond-after</symbol> is similar, but suppresses the
+       initial printout, and is tested when the function returns.
+       <symbol>:cond</symbol> tries both before and after.</para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><symbol>:step</symbol></term>
+      <listitem>
+       <para>If <replaceable>form</replaceable> evaluates to true, the stepper
+       is entered.</para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><symbol>:break</symbol></term>
+      <term><symbol>:break-after</symbol></term>
+      <listitem>
+       <para>If specified, and <replaceable>form</replaceable> evaluates to
+       true, then the debugger is invoked at the start of the function or at
+       the end of the function according to the respective option.</para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><symbol>:print</symbol></term>
+      <term><symbol>:print-after</symbol></term>
+      <listitem>
+       <para>In addition to the usual printout, the result of evaluating
+       <replaceable>form</replaceable> is printed at the start of the function
+       or at the end of the function, depending on the option. Multiple print
+       options cause multiple values to be output, in the order in which they
+       were introduced.</para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </refsect1>
+  </refentry>
+ </section>
+</chapter>
+
 </part></book>
 <!-- Keep this comment at the end of the file
  Local variables: