summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Thompson <dthompson@member.fsf.org>2013-09-02 17:14:31 -0400
committerDavid Thompson <dthompson@member.fsf.org>2013-09-02 17:14:31 -0400
commit582b6be470dd10a80fd8a4a31bce3d92e4b509f2 (patch)
tree55378008fa9b0acc69118adbc00c0ddfa41cfa60
parent5e36a594d66c0f5208c97fa1a8e142c0014d172d (diff)
Pass along the *repl-stack* fluid so that nested REPLs work right.
-rw-r--r--2d/game-loop.scm7
-rw-r--r--2d/repl/repl.scm3
2 files changed, 7 insertions, 3 deletions
diff --git a/2d/game-loop.scm b/2d/game-loop.scm
index 844ddb5..af4966f 100644
--- a/2d/game-loop.scm
+++ b/2d/game-loop.scm
@@ -172,14 +172,17 @@ is the unused accumulator time."
(define (time-left current-time next-time)
(max (floor (- next-time current-time)) 0))
-(define (run-repl-thunk thunk input output error)
+(define (run-repl-thunk thunk input output error stack)
(put-mvar
repl-output-mvar
(with-input-from-port input
(lambda ()
(with-output-to-port output
(lambda ()
- (with-error-to-port error thunk)))))))
+ (with-error-to-port error
+ (lambda ()
+ (with-fluids ((*repl-stack* stack))
+ (thunk))))))))))
(define (run-repl)
"Execute a thunk from the REPL is there is one."
diff --git a/2d/repl/repl.scm b/2d/repl/repl.scm
index 58b79e3..e6077cd 100644
--- a/2d/repl/repl.scm
+++ b/2d/repl/repl.scm
@@ -206,7 +206,8 @@
#:on-error (repl-option-ref repl 'on-error)))
(current-input-port)
(current-output-port)
- (current-error-port)))
+ (current-error-port)
+ (fluid-ref *repl-stack*)))
;; Read the results back from
;; game-mvar. Will block until results
;; are available.