Suppose I type
(loop repeat 10000 do (sleep 0.5) (princ "."))
by "accident" in the listener. I'd like to stop this from running so that I can get back to work but don't see how? Also, no periods are printing. Where are they going? Are they filling up my computer like those little holes from a three hold punch? What if it runs out of space? (Sorry, long night).
Gary King gwking@cs.umass.edu writes:
Suppose I type
(loop repeat 10000 do (sleep 0.5) (princ "."))
by "accident" in the listener. I'd like to stop this from running so that I can get back to work but don't see how?
`C-c C-c' in the listener should interrupt the evaluation and drop you in the debugger. From there you can take the ABORT restart.
Also, no periods are printing. Where are they going? Are they filling up my computer like those little holes from a three hold punch? What if it runs out of space? (Sorry, long night).
There is some buffering and I'm not sure of the exact semantics on OpenMCL. I think it'll flush before filling the code with . characters though :-)
-Luke
On Wed, 16 Jun 2004, Luke Gorrie wrote:
Gary King gwking@cs.umass.edu writes:
Suppose I type
(loop repeat 10000 do (sleep 0.5) (princ "."))
Also, no periods are printing. Where are they going? Are they filling up my computer like those little holes from a three hold punch? What if it runs out of space? (Sorry, long night).
There is some buffering and I'm not sure of the exact semantics on OpenMCL. I think it'll flush before filling the code with . characters though :-)
-Luke
A few times a second, a thread wakes up and tries to call FORCE-OUTPUT on every stream on the list CCL::*AUTO-FLUSH-STREAMS*. FORCE-OUTPUT isn't otherwise called automatically until the buffer's full (i.e., streams aren't line-buffered). The default buffer size is 2K bytes, so the code above should produce a bufferful of output every 1K seconds or so.
It's more awkward than it could be to register/deregister a stream for this handling (OTOH, it's not supposed to be the sort of thing that happens all that often, either.) At one point, I think that the swank backend for OpenMCL did this, but it doesn't seem to do so currently.
Gary Byers gb@clozure.com writes:
It's more awkward than it could be to register/deregister a stream for this handling (OTOH, it's not supposed to be the sort of thing that happens all that often, either.) At one point, I think that the swank backend for OpenMCL did this, but it doesn't seem to do so currently.
It re-added this. I haven't actually tried it and the stream is currently never removed from CCL::*AUTO-FLUSH-STREAMS*. Let me now if the change causes troubles.
Helmut
Gary King writes:
Suppose I type
(loop repeat 10000 do (sleep 0.5) (princ "."))
by "accident" in the listener. I'd like to stop this from running so that I can get back to work but don't see how?
CONTROL-C ? On a terminal. Actually, you should use the key configured with: stty intr CHAR You can know which with: stty -a
I'm sorry, I don't use slime yet. With ilisp/emacs, I've bound C-c C-c to interrupt-subjob-ilisp. I assume that with slime, there's an equivalent function. On the old version of slime I've got installed, it's C-g, bound to slime-interrupt.
Also, no periods are printing. Where are they going? Are they filling up my computer like those little holes from a three hold punch? What if it runs out of space? (Sorry, long night).
I guess so.
They're put in a buffer. They will get output not before a new line (TERPRI) is printed or FINISH-OUTPUT is called, or, if there's no bug in the implementation, when indeed the buffer runs out of space (but these days, buffers can be large).
(loop repeat 10000 do (sleep 0.5) (princ ".") (finish-output))