diff --git a/collects/drscheme/private/link.ss b/collects/drscheme/private/link.ss index cc34e54e08..18c9b2f0c3 100644 --- a/collects/drscheme/private/link.ss +++ b/collects/drscheme/private/link.ss @@ -2,7 +2,7 @@ (require "modes.ss" "font.ss" "eval.ss" - "module-overview.ss" + "module-browser.ss" "multi-file-search.ss" "debug.ss" "module-language.ss" diff --git a/collects/drscheme/private/module-overview.ss b/collects/drscheme/private/module-browser.ss similarity index 98% rename from collects/drscheme/private/module-overview.ss rename to collects/drscheme/private/module-browser.ss index b5c578cc86..58f73b2498 100644 --- a/collects/drscheme/private/module-overview.ss +++ b/collects/drscheme/private/module-browser.ss @@ -740,7 +740,15 @@ [(eof-object? sexp) (custodian-shutdown-all user-custodian)] [else - (add-connections sexp) + ;; instead of escaping when there's an error on the user thread, + ;; we just shut it all down. This kills the event handling loop + ;; for the eventspace and wakes up the thread below + ;; NOTE: we cannot set this in `init' since the call to `init' + ;; is wrapped in a parameterize of the error-escape-handler + (parameterize ([error-escape-handler + (λ () + (custodian-shutdown-all user-custodian))]) + (add-connections sexp)) (continue)])) (define init-complete (make-semaphore 0)) @@ -774,15 +782,11 @@ p)))) (current-load-relative-directory init-dir) (current-directory init-dir) - #; - (error-display-handler - (λ (str exn) - (set! error-str str) - (custodian-shutdown-all user-custodian))) + (error-display-handler (λ (str exn) (set! error-str str))) (semaphore-post init-complete)) (define (kill-termination) (void)) (define complete-program? #t) - + (define stupid-internal-define-syntax1 ((drscheme:eval:traverse-program/multiple (preferences:get (drscheme:language-configuration:get-settings-preferences-symbol))