[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-racket 05d1807 031/191: Racket: , enter meta-comman
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-racket 05d1807 031/191: Racket: , enter meta-command instead of namespace clobbering |
Date: |
Sun, 1 Aug 2021 18:31:54 -0400 (EDT) |
branch: elpa/geiser-racket
commit 05d18077ac263b4c4cb93cd19268b2a030b7781d
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
Racket: ,enter meta-command instead of namespace clobbering
---
geiser/user.rkt | 55 ++++++++++++++++++++++++-------------------------------
1 file changed, 24 insertions(+), 31 deletions(-)
diff --git a/geiser/user.rkt b/geiser/user.rkt
index 33b8186..b476de4 100644
--- a/geiser/user.rkt
+++ b/geiser/user.rkt
@@ -15,42 +15,35 @@
(require geiser/enter geiser/eval (for-syntax racket/base))
-(define-syntax (enter! stx)
- (syntax-case stx ()
- [(enter! mod)
- (if (or (not (syntax-e #'mod))
- (module-path? (syntax->datum #'mod)))
- #'(do-enter! 'mod)
- (raise-syntax-error
- #f
- "not a valid module path, and not #f"
- stx
- #'mod))]
- [_ (raise-syntax-error
- #f
- "bad syntax; should be `(enter! <module-path-or-#f>)'"
- stx)]))
-
-(define orig-namespace (current-namespace))
-
-(define (do-enter! mod)
- (if mod
- (begin
- (enter-module mod)
- (let ([ns (module->namespace mod)])
- (current-namespace ns)
- (namespace-require 'geiser/user)))
- (current-namespace orig-namespace)))
-
+(define top-namespace (current-namespace))
+
+(define (enter! mod stx)
+ (cond ((not mod) (current-namespace top-namespace))
+ ((module-path? mod)
+ (enter-module mod)
+ (current-namespace (module->namespace mod)))
+ (else (raise-syntax-error
+ #f
+ "not a valid module path, and not #f"
+ stx
+ mod))))
(define orig-loader (current-load/use-compiled))
+(define orig-reader (current-prompt-read))
+
+(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))
+ (_ form))))
+
(define (init)
(compile-enforce-module-constants #f)
(current-load/use-compiled (module-loader orig-loader))
- (current-prompt-read (compose (make-repl-reader (current-prompt-read))
- current-namespace)))
+ (current-prompt-read
+ (compose (make-repl-reader geiser-read) current-namespace)))
(init)
-
-;;; user.rkt ends here
- [nongnu] elpa/geiser-racket 46bde5a 115/191: Indentation for match-let, (continued)
- [nongnu] elpa/geiser-racket 46bde5a 115/191: Indentation for match-let, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 9fa09a8 129/191: Racket: fix for jump to manual for symbols not in the namespace, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 15b52ff 131/191: Fix for Racket compilation error jumping in REPL, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 85d1e6a 136/191: racket: ,gcd -> ,pwd, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket b4f158d 139/191: racket: module* and module+ denote submodules too, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket aa7ac2e 146/191: Missing require cl for case, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 95d41eb 156/191: Racket: better behaviour of geiser-eval-buffer, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 41c41e9 177/191: Delete trailing whitespace, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 8a30ded 023/191: Redisplaying the prompt after empty lines on the REPL., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket c19f8dc 015/191: Racket: serious bug preventing file compilation fixed., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 05d1807 031/191: Racket: , enter meta-command instead of namespace clobbering,
Philip Kaludercic <=
- [nongnu] elpa/geiser-racket 61bcd9a 009/191: Racket: square cosmetics., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket aa2a6be 064/191: Racket: slightly better handling of the signatures cache, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 7df27a3 067/191: Document browser improvements, and Racket using them, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 2494b95 068/191: Document browser improvements, and Racket using them, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket ed7347d 093/191: Racket: configurable image cache directory, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 36d2d55 097/191: racket: reading into elisp-land the cache dir as needed, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 1f7a9e2 124/191: Racket: better help commands, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket b23d52d 123/191: Racket: better help commands, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket a5f8702 132/191: Racket: correct font lock for define/match, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 4e68ebc 140/191: racket: C-u C-c C-z on a submodule enters it, Philip Kaludercic, 2021/08/01