Camille Troillard tuscland@mac.com writes:
The problem is that I really can't get out of this, if I type ":pop" for instance, Emacs tell me that the "Text is read only". Then Emacs is stuck there, the only way to get out of this is to quit Emacs and restart. I sometimes get the same problem when pressing return or some other key without evaluating "(break)" ...
You encountered two bugs at once. The first is buggy handling of asynchronous output in SLIME, which causes the "Text is read only" errors. Th CVS version contains some fixes for this.
The second problem is that OpenMCL doesn't invoke the *debugger-hook* on BREAK. This is probably more ANSI compliant than what CMUCL does, but not exactly helpful for SLIME. You can try to put something like this in your .swank.lisp:
(let ((ccl::*warn-if-redefine-kernel* nil)) (defun ccl::cbreak-loop (msg cont-string condition error-pointer) (when *debugger-hook* (let ((hook *debugger-hook*) (*debugger-hook* nil)) (funcall hook condition hook))) (let* ((*print-readably* nil)) (ccl::with-terminal-input (ccl::%break-message msg condition error-pointer) (restart-case (ccl::break-loop condition error-pointer ccl::*backtrace-on-break*) (continue () :report (lambda (stream) (write-string cont-string stream)))) (fresh-line *error-output*) nil))))
Helmut.