repl printing is now interruptable without exiting ikarus

This commit is contained in:
Abdulaziz Ghuloum 2008-12-03 00:52:38 -05:00
parent d35f039ca1
commit c15f3d5e0d
2 changed files with 23 additions and 13 deletions

View File

@ -69,7 +69,8 @@ description:
(display-prompt 0) (display-prompt 0)
(let ([x (with-exception-handler (let ([x (with-exception-handler
(lambda (ex) (lambda (ex)
(cond [(lexical-violation? ex) (cond
[(lexical-violation? ex)
(print-ex ex) (print-ex ex)
(reset k)] (reset k)]
[(interrupted-condition? ex) [(interrupted-condition? ex)
@ -101,10 +102,19 @@ description:
(eval-proc x)))))) (eval-proc x))))))
(lambda v* (lambda v*
(unless (andmap (lambda (v) (eq? v (void))) v*) (unless (andmap (lambda (v) (eq? v (void))) v*)
(with-exception-handler
(lambda (ex)
(cond
[(interrupted-condition? ex)
(flush-output-port (console-output-port))
(newline (console-output-port))
(reset k)]
[else (raise-continuable ex)]))
(lambda ()
(for-each (for-each
(lambda (v) (lambda (v)
(pretty-print v (console-output-port))) (pretty-print v (console-output-port)))
v*))))])))) v*))))))]))))
(wait eval-proc escape-k))) (wait eval-proc escape-k)))
(define do-new-cafe (define do-new-cafe

View File

@ -1 +1 @@
1694 1695