summaryrefslogtreecommitdiff
path: root/geiser/emacs.scm
diff options
context:
space:
mode:
Diffstat (limited to 'geiser/emacs.scm')
-rw-r--r--geiser/emacs.scm23
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)))