diff options
Diffstat (limited to 'scheme')
| -rw-r--r-- | scheme/gambit/geiser/gambit.scm | 36 | 
1 files changed, 34 insertions, 2 deletions
| 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))) | 
