(print): When removing objects from Vprint_number_table,
authorRichard M. Stallman <rms@gnu.org>
Sat, 9 Oct 1999 22:58:37 +0000 (22:58 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 9 Oct 1999 22:58:37 +0000 (22:58 +0000)
only scan the newly added objects.
(print_preprocess): If OBJ is a gensym, and print-continuous-numbering,
unconditionally force it to stay in the table.

src/ChangeLog
src/print.c

index 920f220..fa10ff3 100644 (file)
@@ -1,3 +1,10 @@
+1999-10-09  Richard M. Stallman  <rms@caffeine.ai.mit.edu>
+
+       * print.c (print): When removing objects from Vprint_number_table,
+       only scan the newly added objects.
+       (print_preprocess): If OBJ is a gensym, and print-continuous-numbering,
+       unconditionally force it to stay in the table.
+
 1999-10-09  Gerd Moellmann  <gerd@gnu.org>
 
        * xfns.c (prepare_image_for_display): Don't try to load image if
index d6c8571..dc28ed0 100644 (file)
@@ -1069,12 +1069,13 @@ print (obj, printcharfun, escapeflag)
   /* Construct Vprint_number_table for print-gensym and print-circle.  */
   if (!NILP (Vprint_gensym) || !NILP (Vprint_circle))
     {
-      int i, index = 0;
+      int i, start, index;
       /* Construct Vprint_number_table.  */
+      start = index = print_number_index;
       print_preprocess (obj);
       /* Remove unnecessary objects, which appear only once in OBJ;
         that is, whose status is Qnil.  */
-      for (i = 0; i < print_number_index; i++)
+      for (i = start; i < print_number_index; i++)
        if (!NILP (PRINT_NUMBER_STATUS (Vprint_number_table, i)))
          {
            PRINT_NUMBER_OBJECT (Vprint_number_table, index)
@@ -1138,6 +1139,12 @@ print_preprocess (obj)
            }
        }
       PRINT_NUMBER_OBJECT (Vprint_number_table, print_number_index) = obj;
+      /* If Vprint_continuous_numbering is non-nil and OBJ is a gensym,
+        always print the gensym with a number.  This is a special for
+        the lisp function byte-compile-output-docform.  */
+      if (! NILP (Vprint_continuous_numbering) && SYMBOLP (obj)
+         && NILP (XSYMBOL (obj)->obarray))
+       PRINT_NUMBER_STATUS (Vprint_number_table, print_number_index) = Qt;
       print_number_index++;
 
       switch (XGCTYPE (obj))