From: Matt Birkholz Date: Thu, 21 Jun 2018 19:43:08 +0000 (-0700) Subject: Merge branch 'master' into pucked. X-Git-Tag: mit-scheme-pucked-9.2.15~11 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=348fca60748cd2ba1855924abad3d48696ce8e22;p=mit-scheme.git Merge branch 'master' into pucked. --- 348fca60748cd2ba1855924abad3d48696ce8e22 diff --cc src/edwin/intmod.scm index 35f0419d9,b13526a73..d87a30fab --- a/src/edwin/intmod.scm +++ b/src/edwin/intmod.scm @@@ -114,39 -114,31 +114,37 @@@ evaluated in the specified inferior REP (buffer-put! buffer 'MAJOR-MODE-LOCKED #t)) (if (environment? environment) (local-set-variable! scheme-environment environment buffer)) - (create-thread editor-thread-root-continuation - (lambda () - (let ((port - (make-interface-port buffer - (let ((thread (current-thread))) - (detach-thread thread) - thread)))) - (attach-buffer-interface-port! buffer port) - (parameterize ((param:exit-hook inferior-repl/exit) - (param:suspend-hook inferior-repl/suspend)) - (dynamic-wind - (lambda () unspecific) - (lambda () - (repl/start (make-repl #f - port - environment - #f - `((ERROR-DECISION ,error-decision)) - user-initial-prompt) - (make-init-message message))) - (lambda () - (signal-thread-event editor-thread - (lambda () - (unwind-inferior-repl-buffer buffer)))))))) - buffer)) + (let ((return (make-thread-queue 1)) + (proceed (make-thread-queue 1))) + (create-thread editor-thread-root-continuation + (lambda () + (let ((port + (make-interface-port buffer + (let ((thread (current-thread))) + (detach-thread thread) + thread)))) + (thread-queue/queue! return port) ;pass port to editor-thread + (thread-queue/dequeue! proceed) ;wait for port to be attached - (parameterize* (list (cons param:exit-hook inferior-repl/exit) - (cons param:suspend-hook inferior-repl/suspend)) - (lambda () - (dynamic-wind - (lambda () unspecific) - (lambda () - (repl/start - (make-repl #f - port - environment - #f - `((ERROR-DECISION ,error-decision)) - user-initial-prompt) - (make-init-message message))) - (lambda () - (signal-thread-event editor-thread - (lambda () - (unwind-inferior-repl-buffer buffer))))))))) ++ (parameterize ((param:exit-hook inferior-repl/exit) ++ (param:suspend-hook inferior-repl/suspend)) ++ (dynamic-wind ++ (lambda () unspecific) ++ (lambda () ++ (repl/start (make-repl #f ++ port ++ environment ++ #f ++ `((ERROR-DECISION ,error-decision)) ++ user-initial-prompt) ++ (make-init-message message))) ++ (lambda () ++ (signal-thread-event editor-thread ++ (lambda () ++ (unwind-inferior-repl-buffer buffer)))))))) + buffer) + (let ((port (thread-queue/dequeue! return))) + (attach-buffer-interface-port! buffer port) + (thread-queue/queue! proceed 'ready)))) (define (make-init-message message) (if message