On Mon, Sep 27, 2010 at 2:13 PM, Nathan Bird nathan@acceleration.net wrote:
On 9/23/2010 4:52 PM, Nathan Bird wrote:
I put a test case here that documents it: http://paste.lisp.org/+2GLO
The issue is that when it starts a presentation it saves a marker, but then that marker gets moved when printing text and so when it ends the presentation the start and end markers are the same point, the one immediately after the text we are trying to present.
I think we got this fixed. I changed the repl-emit to use insert rather than insert-before. This leaves presentation-start marker intact as well as leaving the overlay in place rather than extending the end of the overlay with each further insert. This change necessitates a few other tweaks to that function as the other markers that were being moved based on the insert-before need to be updated manually now.
This looks good.
I also change a few items in swank-presentation-streams to get that working:
- pass slime-stream-p :dedicated through as other functions use that.
<- presentation streams work with dedicated output streams now (again?).
- slime-stream-p had a scheme to cache the last-answer that wasn't
threadsafe, it is now.
Excellent.
- slime-stream-p can be dynamically overridden with *slime-stream-p*;
useful when writing to a mem buffer or some other location that will be dumped to a slime stream but is natively detectable as such.
I'm not sure about the last change. I don't think it can work in a non-dedicated stream setup because the presentation boundaries are signalled out-of-band.
Matthias