Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
e6d4cddd
Commit
e6d4cddd
authored
Sep 18, 2002
by
Richard M. Stallman
Browse files
(print): Clear out the unused parts of Vprint_number_table.
(syms_of_print): Doc fix for `print-number-table'.
parent
fef7974b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
9 deletions
+22
-9
src/print.c
src/print.c
+22
-9
No files found.
src/print.c
View file @
e6d4cddd
...
...
@@ -1169,21 +1169,30 @@ print (obj, printcharfun, escapeflag)
if
(
!
NILP
(
Vprint_gensym
)
||
!
NILP
(
Vprint_circle
))
{
int
i
,
start
,
index
;
/* Construct Vprint_number_table. */
start
=
index
=
print_number_index
;
/* Construct Vprint_number_table.
This increments print_number_index for the objects added. */
print_preprocess
(
obj
);
/* Remove unnecessary objects, which appear only once in OBJ;
that is, whose status is Qnil. */
that is, whose status is Qnil.
Compactify the necessary objects.
*/
for
(
i
=
start
;
i
<
print_number_index
;
i
++
)
if
(
!
NILP
(
PRINT_NUMBER_STATUS
(
Vprint_number_table
,
i
)))
{
PRINT_NUMBER_OBJECT
(
Vprint_number_table
,
index
)
=
PRINT_NUMBER_OBJECT
(
Vprint_number_table
,
i
);
/* Reset the status field for the next print step. Now this
field means whether the object has already been printed. */
PRINT_NUMBER_STATUS
(
Vprint_number_table
,
index
)
=
Qnil
;
index
++
;
}
/* Clear out objects outside the active part of the table. */
for
(
i
=
index
;
i
<
print_number_index
;
i
++
)
PRINT_NUMBER_OBJECT
(
Vprint_number_table
,
i
)
=
Qnil
;
/* Reset the status field for the next print step. Now this
field means whether the object has already been printed. */
for
(
i
=
start
;
i
<
print_number_index
;
i
++
)
PRINT_NUMBER_STATUS
(
Vprint_number_table
,
i
)
=
Qnil
;
print_number_index
=
index
;
}
...
...
@@ -2087,10 +2096,14 @@ This variable should not be set with `setq'; bind it with a `let' instead. */);
DEFVAR_LISP
(
"print-number-table"
,
&
Vprint_number_table
,
doc:
/* A vector used internally to produce `#N=' labels and `#N#' references.
The Lisp printer uses this vector to detect Lisp objects referenced more
than once. When `print-continuous-numbering' is bound to t, you should
probably also bind `print-number-table' to nil. This ensures that the
value of `print-number-table' can be garbage-collected once the printing
is done. */
);
than once.
When you bind `print-continuous-numbering' to t, you should probably
also bind `print-number-table' to nil. This ensures that the value of
`print-number-table' can be garbage-collected once the printing is
done. If all elements of `print-number-table' are nil, it means that
the printing done so far has not found any shared structure or objects
that need to be recorded in the table. */
);
Vprint_number_table
=
Qnil
;
/* prin1_to_string_buffer initialized in init_buffer_once in buffer.c */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment