[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-guile 8c8790c 029/284: Capture backtrace. Fix load/
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-guile 8c8790c 029/284: Capture backtrace. Fix load/compile from Emacs. |
Date: |
Sun, 1 Aug 2021 18:29:10 -0400 (EDT) |
branch: elpa/geiser-guile
commit 8c8790cb9731adb521c06dee7489218fc02029a6
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
Capture backtrace. Fix load/compile from Emacs.
---
geiser/emacs.scm | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/geiser/emacs.scm b/geiser/emacs.scm
index 382958d..d5e245b 100644
--- a/geiser/emacs.scm
+++ b/geiser/emacs.scm
@@ -37,16 +37,25 @@
ge:module-children
ge:module-location)
#:use-module (srfi srfi-1)
+ #:use-module (system base compile)
#:use-module ((geiser introspection) :renamer (symbol-prefix-proc 'ge:)))
(define (write-result result output)
(write (list (cons 'result result) (cons 'output output)))
(newline))
-(define (write-error key . args)
- (write (list (cons 'error (apply parse-error (cons key args)))))
+(define (write-error key args stack)
+ (write (list (cons 'error (apply parse-error (cons key args)))
+ (cons 'stack (parse-stack stack))))
(newline))
+(define (parse-stack stack)
+ (if stack
+ (list
+ (with-output-to-string
+ (lambda () (display-backtrace stack (current-output-port)))))
+ '()))
+
(define (parse-error key . args)
(let* ((len (length args))
(subr (and (> len 0) (first args)))
@@ -58,10 +67,11 @@
(cons 'msg (if msg (apply format (cons #f (cons msg margs))) '()))
(cons 'rest (or rest '())))))
-(define (evaluate form module evaluator)
+(define (evaluate form module-name evaluator)
(let ((module (or (and (list? module-name)
(resolve-module module-name))
- (current-module))))
+ (current-module)))
+ (captured-stack #f))
(catch #t
(lambda ()
(let ((result #f))
@@ -69,7 +79,8 @@
(lambda ()
(set! result (evaluator form module))))))
(write-result result output))))
- write-error)))
+ (lambda (key . args) (write-error key args captured-stack))
+ (lambda (key . args) (set! captured-stack (make-stack #t))))))
(define (eval-compile form module)
(save-module-excursion
- [nongnu] elpa/geiser-guile 1b60c6f 003/284: * scheme/guile/geiser/eval.scm: missing file in previous commit, (continued)
- [nongnu] elpa/geiser-guile 1b60c6f 003/284: * scheme/guile/geiser/eval.scm: missing file in previous commit, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 475fab3 005/284: README stuff., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 7d50479 001/284: Guile scheme files moved to scheme/guile., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile b20a784 010/284: Better arg lists., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile b853bac 009/284: Faster M-., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 9ff1f7e 033/284: Eval/load file in the correct module., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 441cc2a 037/284: Refactoring: local bindings discovery moved to schemeland., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile ceca3e5 038/284: Display (quote foo) as 'foo in autodoc strings., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 4ab2e9c 016/284: Autodoc: try symbol at point first. Some cleanups., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile a64467d 022/284: New command to open module file., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 8c8790c 029/284: Capture backtrace. Fix load/compile from Emacs.,
Philip Kaludercic <=
- [nongnu] elpa/geiser-guile 8db7920 030/284: Better stack delimitation: include only frames relevant to the eval'd expression., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile c60b2e0 035/284: Put new procedure-arguments into (geiser introspection) until it goes upstream., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 0d62495 048/284: Fix autodoc support for multiline arities in documentation., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 4a647eb 011/284: Faster, asynchronous autodoc., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 8cd5259 014/284: Small autodoc fixes., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 56671f6 015/284: New command to get docstrings (C-cC-d)., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile f857023 007/284: Edit symbol at point for programs., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile d0f98a7 036/284: Simpler handling of rest args in Emacs' side., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 221e64e 042/284: Some refactoring and new ge:macroexpand., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile d69ca12 044/284: Autodoc support for GOOPS methods., Philip Kaludercic, 2021/08/01