[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-racket e1b6db4 033/191: Racket: new meta-commands:
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-racket e1b6db4 033/191: Racket: new meta-commands: , eval , apply , no-values |
Date: |
Sun, 1 Aug 2021 18:31:55 -0400 (EDT) |
branch: elpa/geiser-racket
commit e1b6db4fef94c88fbb1708b7cfd0294195db0b53
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
Racket: new meta-commands: ,eval ,apply ,no-values
---
geiser/user.rkt | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/geiser/user.rkt b/geiser/user.rkt
index b476de4..272fcd9 100644
--- a/geiser/user.rkt
+++ b/geiser/user.rkt
@@ -13,7 +13,7 @@
(provide enter!)
-(require geiser/enter geiser/eval (for-syntax racket/base))
+(require geiser/main geiser/enter geiser/eval (for-syntax racket/base))
(define top-namespace (current-namespace))
@@ -32,12 +32,28 @@
(define orig-reader (current-prompt-read))
+(define (geiser-eval)
+ (define geiser-main (module->namespace 'geiser/main))
+ (let* ((mod (read))
+ (lang (read))
+ (form (read)))
+ (datum->syntax #f
+ (list 'quote
+ (cond ((equal? form '(unquote apply))
+ (let* ((proc (eval (read) geiser-main))
+ (args (read)))
+ ((geiser:eval lang) `(,proc ,@args) mod)))
+ (else ((geiser:eval lang) form mod)))))))
+
(define (geiser-read)
(let ((form (orig-reader)))
(syntax-case form ()
- ((uq cmd) (and (eq? 'unquote (syntax-e #'uq))
- (eq? 'enter (syntax-e #'cmd)))
- (enter! (read) #'cmd))
+ ((uq cmd) (eq? 'unquote (syntax-e #'uq))
+ (case (syntax-e #'cmd)
+ ((enter) (enter! (read) #'cmd))
+ ((eval) (geiser-eval))
+ ((no-values) (datum->syntax #f (void)))
+ (else form)))
(_ form))))
(define (init)
- [nongnu] elpa/geiser-racket de36aed 027/191: Better REPL exit command, (continued)
- [nongnu] elpa/geiser-racket de36aed 027/191: Better REPL exit command, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 15cb8fb 006/191: Racket: providing error contexts, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 739aaec 010/191: Racket: improvements in non-loaded module location., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 912e318 020/191: Racket: catching errors during contract retrieval., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket b53aba6 036/191: Racket: , eval -> , geiser-eval, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 2ef38a5 037/191: Racket: , eval -> , geiser-eval, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 9790b39 039/191: Racket: little evaluation nits, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 2b2b13f 043/191: Nit, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket d789d5f 046/191: Racket: fix for prompt display on , enter, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 1c3ae9f 018/191: Racket: showing contracts in module documentation., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket e1b6db4 033/191: Racket: new meta-commands: , eval , apply , no-values,
Philip Kaludercic <=
- [nongnu] elpa/geiser-racket 47afcd9 030/191: Racket nit: racket/base instead of scheme/base, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket a8e6427 032/191: Racket: , enter meta-command instead of namespace clobbering, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket cb2287b 035/191: Racket: using meta-commands instead of dynamic-require (#30347), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket e625b74 038/191: Racket: fix for help function, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 5a048d7 040/191: Racket: little evaluation nits, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 98bd9f2 041/191: Nits, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 4b43cf6 042/191: Pumbling cleanups, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 7c46713 045/191: Racket: use EOT token for internal communications, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket e43de25 047/191: geiser-squarify to toggle between () and [], Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket ac54a9e 051/191: Partial work (connections working), Philip Kaludercic, 2021/08/01