[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-racket 15cb8fb 006/191: Racket: providing error con
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-racket 15cb8fb 006/191: Racket: providing error contexts |
Date: |
Sun, 1 Aug 2021 18:31:49 -0400 (EDT) |
branch: elpa/geiser-racket
commit 15cb8fb78c20530a4538f8f4ee6f84226e3a37e9
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
Racket: providing error contexts
---
geiser/eval.rkt | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/geiser/eval.rkt b/geiser/eval.rkt
index e0bcffa..db50ded 100644
--- a/geiser/eval.rkt
+++ b/geiser/eval.rkt
@@ -30,9 +30,28 @@
(define (exn-key e)
(vector-ref (struct->vector e) 0))
+(define current-marks (make-parameter (current-continuation-marks)))
+
+(define (get-real-context e)
+ (let ((ec (continuation-mark-set->context (exn-continuation-marks e)))
+ (cc (continuation-mark-set->context (current-marks))))
+ (filter-not (lambda (c) (member c cc)) ec)))
+
+(define (display-exn-context c)
+ (define (maybe-display p x) (when x (display p) (display x)) x)
+ (when (and (pair? c) (cdr c))
+ (let ((sloc (cdr c)))
+ (and (maybe-display "" (srcloc-source sloc))
+ (maybe-display ":" (srcloc-line sloc))
+ (maybe-display ":" (srcloc-column sloc)))
+ (maybe-display ": " (car c))
+ (newline))))
+
(define (set-last-error e)
(set! last-result `((error (key . ,(exn-key e)))))
- (display (exn-message e)))
+ (display (exn-message e))
+ (newline) (newline)
+ (for-each display-exn-context (get-real-context e)))
(define (write-value v)
(with-output-to-string
@@ -46,8 +65,9 @@
(let ((output
(with-output-to-string
(lambda ()
- (with-handlers ((exn? set-last-error))
- (call-with-values thunk set-last-result))))))
+ (parameterize ((current-marks (current-continuation-marks)))
+ (with-handlers ((exn? set-last-error))
+ (call-with-values thunk set-last-result)))))))
(append last-result `((output . ,output)))))
(define (eval-in form spec lang)
- [nongnu] elpa/geiser-racket 7f8b4b7 014/191: Better switch/import REPL commands., (continued)
- [nongnu] elpa/geiser-racket 7f8b4b7 014/191: Better switch/import REPL commands., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 7a16f5a 012/191: Racket: using `_' for naming unknown args in autodoc., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 130c38e 028/191: Racket: support for gracket-text, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket cd122ff 021/191: Tweaks to scheme implementation selection, and docs for it., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 26ba1f2 011/191: Racket: improvements in module lookups., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket c03596d 013/191: Wee refactoring., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket c6c6bba 026/191: Support for evaluation warnings, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket c07a42d 034/191: Racket: using meta-commands instead of dynamic-require (#30347), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket d8076a5 029/191: Couple nits, Philip Kaludercic, 2021/08/01
- [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 <=
- [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, 2021/08/01
- [nongnu] elpa/geiser-racket 47afcd9 030/191: Racket nit: racket/base instead of scheme/base, Philip Kaludercic, 2021/08/01