[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

expunging objects from dynamic windows

I really like the dynamic windows of Genera 7.0, except
there is at least one thing one has to be aware of. The
dynamic lisp listener provides two *separable* (at least
conceptually) feature: scrolling, ... and mouse sensitivity
for things like Mouse-M (describe ...). The thing one has
to be weary of is that if you print out an object like
#<FOO 777777777> that object can't get garbage collected.
If your objects are highly intertwined then if you even
print out *one* temporary object, say while debugging,
that has a handle on all the other temporary objects
which you have created, then you lose because nothing
will be GCed. Now you can of course do a :Clear Output History
but that has two problems. First, you lose scrolling
along with mouse sensitivity. Second, if you forget to
do a :Clear Output History, or if you are running a long
program that is dumping a lot of trace output you lose
because if the EGC flips enough times before you get
a chance to do a :Clear Output History the object move
high enough in the Ephemeral levels to never be collected.

There are four solutions which I suggest that Symbolics
implement, each being an improvement on the previous one.

First, provide a command which can clear the objects
associate with a window without clearing the scrolling
history. This means changing all object references to
presentation string references in the window history.

Second, provide a command which will clear the
scrolling and/or object history of window except
for the last N pages.

Third, provide a switch setting which I can set to
ask that objects never be associated with a window,
just their presentation strings. I can set such a
switch when I know that I am doing debugging tracing
output and want scrolling history but can forgo
mouse sensitivity. Ideally, I could set this to
automatically preserve only the last N pages
of object history and only the last M pages of
scrolling history where M>=N.

Fourth, provide a switch setting where the EGC was
smart enough to automatically purge object references
more than N pages back just before it did a flip.
This way I could get the best of all worlds until
a flip came.

Anybody feel like hacking this?