[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-guile 67905aa 084/284: Simpler, nicer, more efficie
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-guile 67905aa 084/284: Simpler, nicer, more efficient handling of evaluation results. It |
Date: |
Sun, 1 Aug 2021 18:29:21 -0400 (EDT) |
branch: elpa/geiser-guile
commit 67905aae390b21e4f27250b79d43184c833256a4
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
Simpler, nicer, more efficient handling of evaluation results. It
comes with a pony too.
---
geiser/evaluation.scm | 51 ++++++++++++++++++++++++---------------------------
1 file changed, 24 insertions(+), 27 deletions(-)
diff --git a/geiser/evaluation.scm b/geiser/evaluation.scm
index 3e38843..c2147a1 100644
--- a/geiser/evaluation.scm
+++ b/geiser/evaluation.scm
@@ -47,40 +47,37 @@
(else (display (format "ERROR: ~a, args: ~a" (car args) (cdr args)))))
`(error (key . ,(car args))))
-(define (evaluate form module-name evaluator)
- (let ((module (or (and (list? module-name)
- (resolve-module module-name))
- (current-module)))
- (evaluator (lambda (f m)
- (call-with-values (lambda () (evaluator f m)) list)))
- (result #f)
- (captured-stack #f)
- (error #f))
+(define (ge:compile form module-name)
+ (let* ((module (or (and (list? module-name)
+ (resolve-module module-name))
+ (current-module)))
+ (result #f)
+ (captured-stack #f)
+ (error #f)
+ (ev (lambda ()
+ (save-module-excursion
+ (set-current-module module)
+ (set! result (call-with-values
+ (lambda () (compile form))
+ (lambda vs
+ (map (lambda (v)
+ (with-output-to-string
+ (lambda () (write v))))
+ vs))))))))
(let ((output
(with-output-to-string
(lambda ()
- (set! result
- (catch #t
- (lambda ()
- (start-stack 'geiser-eval (evaluator form module)))
- (lambda args
- (set! error #t)
- (apply handle-error captured-stack args))
- (lambda args
- (set! captured-stack (make-stack #t 2 15)))))))))
+ (catch #t
+ (lambda () (start-stack 'geiser-eval (ev)))
+ (lambda args
+ (set! error #t)
+ (apply handle-error captured-stack args))
+ (lambda args
+ (set! captured-stack (make-stack #t 2 15))))))))
(write `(,(if error result (cons 'result result))
(output . ,output)))
(newline))))
-(define (eval-compile form module)
- (save-module-excursion
- (lambda ()
- (set-current-module module)
- (compile form))))
-
-(define (ge:compile form module-name)
- (evaluate form module-name eval-compile))
-
(define ge:eval ge:compile)
(define (ge:compile-file path)
- [nongnu] elpa/geiser-guile 480767e 162/284: Guile: geiser-guile-jump-on-debug-p, geiser-guile-show-debug-help-p, (continued)
- [nongnu] elpa/geiser-guile 480767e 162/284: Guile: geiser-guile-jump-on-debug-p, geiser-guile-show-debug-help-p, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile b95b487 165/284: Guile: fix bug in error display, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 30c656f 061/284: Support for multiple Scheme implementations, Chapter 1., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 28722c0 068/284: Bug fix: really remove killed buffers from the list of closed repls., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 1c50bcb 072/284: Improvements to module name support (using prefixes) and Guile support., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile bb5b1cb 076/284: Guile: customizable load path., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile f9be2bc 080/284: Guile: better stack trace display., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile cb05947 078/284: Guile: rewriting stack trace captures - not yet complete., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 789248b 082/284: Guile: backtrace buttonization., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 6590f6b 081/284: Guile: Bug fix in the latest evaluation code changes., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 67905aa 084/284: Simpler, nicer, more efficient handling of evaluation results. It,
Philip Kaludercic <=
- [nongnu] elpa/geiser-guile 387d557 095/284: Reload: we now remember user customizations and restore them during geiser-reload., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 417460b 099/284: Multiple arity display, used by PLT backend (case-lambda)., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 360343e 092/284: Fixes for all byte-compilation warnings., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 3cb7a6c 087/284: Guile: fix for rest marker in autodoc., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile c709c1d 106/284: Guile: fix for autodoc in 1.9.7, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 5835dc5 107/284: Guile: Geiser now behaves correctly in buffers for unloaded modules., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 98dd4d8 108/284: Guile: Geiser now behaves correctly in buffers for unloaded modules., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 19acc65 112/284: New command to switch to REPL and put it in current module., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 1af3138 111/284: Guile: support for the REPL debugger, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 32e7fbd 114/284: Guile: 'bt' when entering the debugger., Philip Kaludercic, 2021/08/01