diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-11-12 01:33:09 +0100 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-11-12 01:33:09 +0100 |
commit | fa4e0bc54a0c6cf21efd7d74bf82dca97fb96b6c (patch) | |
tree | b25c6e5da21dab09175a4b7559a8b2eff5f90519 /geiser/emacs.scm | |
parent | 57e300954933f7b1b0672d8ebc9049202d3948b0 (diff) | |
download | geiser-guile-fa4e0bc54a0c6cf21efd7d74bf82dca97fb96b6c.tar.gz geiser-guile-fa4e0bc54a0c6cf21efd7d74bf82dca97fb96b6c.tar.bz2 |
Guile reconnected (but not debuggable (yet))
Or the importance of EOL. Switching to a transaction queue for
communication with the Scheme process means that i had to care about
sending eols in the queries... Guile was waiting for ever reading a
metacommand taking a variable number of arguments. Argh: this has
taken me a few hours -- i'm getting old.
Diffstat (limited to 'geiser/emacs.scm')
-rw-r--r-- | geiser/emacs.scm | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/geiser/emacs.scm b/geiser/emacs.scm index 54e5d34..9e3d410 100644 --- a/geiser/emacs.scm +++ b/geiser/emacs.scm @@ -13,6 +13,7 @@ #:use-module (ice-9 match) #:use-module (system repl command) #:use-module (system repl error-handling) + #:use-module (system repl server) #:use-module (geiser evaluation) #:use-module ((geiser modules) :renamer (symbol-prefix-proc 'ge:)) #:use-module ((geiser completion) :renamer (symbol-prefix-proc 'ge:)) @@ -26,8 +27,13 @@ No-op command used internally by Geiser." (values)) +(define-meta-command ((geiser-newline geiser) repl) + "geiser-newline +Meta-command used by Geiser to emit a new line." + (newline)) + (define-meta-command ((geiser-eval geiser) repl (mod form args) . rest) - "geiser-eval + "geiser-eval module form args () Meta-command used by Geiser to evaluate and compile code." (if (null? args) (call-with-error-handling @@ -36,12 +42,17 @@ Meta-command used by Geiser to evaluate and compile code." (ge:eval `(,proc ,@args) mod)))) (define-meta-command ((geiser-load-file geiser) repl file) - "geiser-load-file + "geiser-load-file file Meta-command used by Geiser to load and compile files." (call-with-error-handling (lambda () (ge:compile-file file)))) -(define-meta-command ((geiser-newline geiser) repl) - "geiser-newline -Meta-command used by Geiser to emit a new line." - (newline)) + +(define-meta-command ((geiser-start-server geiser) repl) + "geiser-start-server +Meta-command used by Geiser to start a REPL server." + (let* ((sock (make-tcp-server-socket #:port 0)) + (port (sockaddr:port (getsockname sock)))) + (spawn-server sock) + (write (list 'port port)) + (newline))) |