original commit: 5de190574c70dd61c29555b7727cd8a91e6caba4
This commit is contained in:
Matthew Flatt 1998-12-30 19:20:26 +00:00
parent 67e960305f
commit 329e9998f2
2 changed files with 26 additions and 8 deletions

View File

@ -1,3 +0,0 @@
(load-relative "editor.ss")
(load-relative "windowing.ss")

View File

@ -37,7 +37,28 @@
(define monitor-sema (make-semaphore 1))
(define monitor-owner #f)
(define old-exn-handler #f)
(define entered-paramz (make-parameterization))
(define old-paramz #f)
;; An exception may be constrcuted while we're entered:
((in-parameterization entered-paramz debug-info-handler)
(lambda ()
(as-exit
(lambda ()
((debug-info-handler))))))
((in-parameterization entered-paramz error-value->string-handler)
(lambda (s n)
(as-exit
(lambda ()
((error-value->string-handler) s n)))))
(define (setup-entered-paramz)
(set! old-paramz (current-parameterization))
(current-parameterization entered-paramz)
(wx:current-eventspace ((in-parameterization old-paramz wx:current-eventspace)))
(error-print-width ((in-parameterization old-paramz error-print-width)))
(break-enabled ((in-parameterization old-paramz break-enabled)))
(exception-break-enabled ((in-parameterization old-paramz exception-break-enabled))))
(define (as-entry f)
(cond
@ -50,7 +71,7 @@
(semaphore-wait monitor-sema)
(set! monitor-owner (current-thread))
(set! old-exn-handler (current-exception-handler))
(setup-entered-paramz)
(current-exception-handler
(lambda (exn)
(k (lambda () (raise exn))))))
@ -60,7 +81,7 @@
(lambda args (lambda () (apply values args)))))
(lambda ()
(set! monitor-owner #f)
(current-exception-handler old-exn-handler)
(current-parameterization old-paramz)
(semaphore-post monitor-sema)))))]))
@ -73,7 +94,7 @@
(lambda ()
(set! eh (current-exception-handler))
(set! monitor-owner #f)
(current-exception-handler old-exn-handler)
(current-parameterization old-paramz)
(semaphore-post monitor-sema))
f
@ -81,7 +102,7 @@
(semaphore-wait monitor-sema)
(set! monitor-owner (current-thread))
(set! old-exn-handler (current-exception-handler))
(setup-entered-paramz)
(current-exception-handler eh)))))
;;;;;;;;;;;;;;; Helpers ;;;;;;;;;;;;;;;;;;;;