[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-gambit 372aab5 04/34: marshall eval and load-file
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-gambit 372aab5 04/34: marshall eval and load-file |
Date: |
Sun, 1 Aug 2021 18:27:15 -0400 (EDT) |
branch: elpa/geiser-gambit
commit 372aab50dd2ccf5799382fab3450e9043eb4de90
Author: mathieu2em <math.per@hotmail.com>
Commit: mathieu2em <math.per@hotmail.com>
marshall eval and load-file
---
elisp/geiser-gambit.el | 39 ++++++++++----------------
scheme/gambit/geiser/gambit.scm | 61 ++++++++++++++++++++++++-----------------
2 files changed, 50 insertions(+), 50 deletions(-)
diff --git a/elisp/geiser-gambit.el b/elisp/geiser-gambit.el
index 3287182..178d2be 100644
--- a/elisp/geiser-gambit.el
+++ b/elisp/geiser-gambit.el
@@ -32,7 +32,7 @@
(eval-when-compile (require 'cl))
(defconst geiser-gambit-builtin-keywords
- '("##debug-repl"))
+ '("##debug-repl" "##import"))
;;; Customization
@@ -124,20 +124,9 @@ If `t', Geiser will use `next-error' to jump to the
error's location."
;;; Evaluation support:
(defun geiser-gambit--geiser-procedure (proc &rest args)
- (let ((fmt
- (case proc
- ((eval compile)
- (let ((form (mapconcat 'identity (cdr args) " ")))
- (format ",geiser-eval %s %s" (or (car args) "#f") form)))
- ((load-file compile-file)
- (format ",geiser-load-file %s" (car args)))
- ((no-values)
- ",geiser-no-values")
- (t
- (let ((form (mapconcat 'identity args " ")))
- (format "(geiser-%s %s)" proc form))))))
- ;;(message fmt)
- fmt))
+ (case proc
+ ((eval compile)
+ (let* ((form (mapconcat
(defconst geiser-gambit--module-re
"( *module +\\(([^)]+)\\|[^ ]+\\)\\|( *define-library +\\(([^)]+)\\|[^
]+\\)")
@@ -299,15 +288,15 @@ If `t', Geiser will use `next-error' to jump to the
error's location."
(interactive)
(geiser-connect 'gambit))
-;;(defun geiser-gambit--startup (remote)
-;; (compilation-setup t)
-;; (let ((geiser-log-verbose-p t)
-;; (geiser-gambit-load-file (expand-file-name
"gambit/geiser/gambit.scm" geiser-scheme-dir)))
-;; (if geiser-gambit-compile-geiser-p
-;; (geiser-eval--send/wait (format "(use utils)(compile-file
\"%s\")(import geiser)"
-;; geiser-gambit-load-file))
-;; (geiser-eval--send/wait (format "(load \"%s\")"
-;; geiser-gambit-load-file)))))
+(defun geiser-gambit--startup (remote)
+ (compilation-setup t)
+ (let ((geiser-log-verbose-p t)
+ (geiser-gambit-load-file (expand-file-name "gambit/geiser/gambit.scm"
geiser-scheme-dir)))
+ (if geiser-gambit-compile-geiser-p
+ (geiser-eval--send/wait (format "(use utils)(compile-file \"%s\")(import
geiser)"
+ geiser-gambit-load-file))
+ (geiser-eval--send/wait (format "(load \"%s\")"
+ geiser-gambit-load-file)))))
;;; Implementation definition:
@@ -317,7 +306,7 @@ If `t', Geiser will use `next-error' to jump to the error's
location."
(arglist geiser-gambit--parameters)
(version-command geiser-gambit--version)
(minimum-version geiser-gambit-minimum-version)
-;; (repl-startup geiser-gambit--startup)
+ (repl-startup geiser-gambit--startup)
(prompt-regexp geiser-gambit--prompt-regexp)
(debugger-prompt-regexp geiser-gambit--debugger-prompt-regexp)
(enter-debugger geiser-gambit--enter-debugger)
diff --git a/scheme/gambit/geiser/gambit.scm b/scheme/gambit/geiser/gambit.scm
index b63faa7..a33f7cc 100644
--- a/scheme/gambit/geiser/gambit.scm
+++ b/scheme/gambit/geiser/gambit.scm
@@ -1,12 +1,23 @@
;;;gambit.scm gambit geiser interaction
-(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-macro (geiser:capture-output x . xs)
+ (let ((out (gensym))
+ (result (gensym)))
+ `(let* ((,out (open-output-string))
+ (,result (parameterize ((current-output-port ,out))
+ ,(cons 'begin (cons x xs)))))
+ (write `((result ,(object->string ,result))
+ (out ,(get-output-string ,out))))
+ (newline))))
+
+(define (geiser:load-file filename)
+ (geiser:capture-output (load filename)))
+
+(define (geiser:eval2 module form) ;; module is not yet supported in gambit
+ (geiser:capture-output (eval form)))
+
+(define-macro (geiser:eval module form . rest)
+ `(geiser:eval2 ,module ,(quote form)))
(define (geiser:newline)
(newline))
@@ -16,21 +27,21 @@
;; 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)))
+;;(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)))
- [nongnu] elpa/geiser-gambit a6101d0 14/34: fixes autocompletion problem caused by bad choice of modules inclusion, (continued)
- [nongnu] elpa/geiser-gambit a6101d0 14/34: fixes autocompletion problem caused by bad choice of modules inclusion, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 1f1c74c 21/34: Delete trailing whitespace, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 09734f0 20/34: Fix indentation, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 9afb60e 12/34: code cleanup, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit f2a5259 18/34: Begin the summary lines of all elisp libraries with three semicolons, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 8f6b060 28/34: Gambit has added the commit guid to the version number. The business logic that deals with gambit version numbers has been updated accordingly, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 4f424f4 25/34: imported files moved to new locations, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit c19162a 27/34: scheme load path adjustments, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 3a169a4 30/34: autoloads and compilation fix, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 28a1ba1 32/34: remote repl instructions, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 372aab5 04/34: marshall eval and load-file,
Philip Kaludercic <=