From 9ea52349fbdb06ffa3f51d817dd49afa62b644c4 Mon Sep 17 00:00:00 2001 From: mathieu2em Date: Mon, 8 Jul 2019 12:37:30 -0400 Subject: WIP repl behaviour fix --- scheme/gambit/geiser/gambit.scm | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'scheme/gambit/geiser') diff --git a/scheme/gambit/geiser/gambit.scm b/scheme/gambit/geiser/gambit.scm index 805fe31..b63faa7 100644 --- a/scheme/gambit/geiser/gambit.scm +++ b/scheme/gambit/geiser/gambit.scm @@ -1,4 +1,36 @@ -;; TODO implement functions required by geiser +;;;gambit.scm gambit geiser interaction -(display "loaded gambit.scm\n") +(define (geiser-load-file file) + (let* ((file (if (symbol? file) (symbol->string file) file)) + (found-file (geiser-find-file file))) + (call-with-result + (lambda () + (when found-file + (load found-file)))))) +(define (geiser:newline) + (newline)) + +(define (geiser:no-values) + (values)) + +;; Spawn a server for remote repl access TODO make it works with remote repl + +(define (geiser-start-server . rest) + (let* ((listener (tcp-listen 0)) + (port (tcp-listener-port listener))) + (define (remote-repl) + (receive (in out) (tcp-accept listener) + (current-input-port in) + (current-output-port out) + (current-error-port out) + + (repl))) + + (thread-start! (make-thread remote-repl)) + + (write-to-log `(geiser-start-server . ,rest)) + (write-to-log `(port ,port)) + + (write `(port ,port)) + (newline))) -- cgit v1.2.3