[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-chibi c32bd70 20/38: Rewrite geiser:eval in order t
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-chibi c32bd70 20/38: Rewrite geiser:eval in order to make it compatible with org-babel. |
Date: |
Sun, 1 Aug 2021 18:26:18 -0400 (EDT) |
branch: elpa/geiser-chibi
commit c32bd701d705b1caf68c93a7f1b601caadaf8133
Author: Lockywolf <lockywolf@gmail.com>
Commit: Lockywolf <lockywolf@gmail.com>
Rewrite geiser:eval in order to make it compatible with org-babel.
* Add an additional guard construction to geiser:eval in order to
catch unexpected I/O errors.
---
elisp/geiser-chibi.el | 5 +++--
scheme/chibi/geiser/geiser.scm | 30 ++++++++++++++++--------------
2 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/elisp/geiser-chibi.el b/elisp/geiser-chibi.el
index 7108ee1..cee6c75 100644
--- a/elisp/geiser-chibi.el
+++ b/elisp/geiser-chibi.el
@@ -73,8 +73,7 @@ This function uses `geiser-chibi-init-file' if it exists."
(format "(geiser:%s %s)" proc form)))))
(defun geiser-chibi--get-module (&optional module)
- (cond ((null module)
- :f)
+ (cond ((null module) :f)
((listp module) module)
((stringp module)
(condition-case nil
@@ -92,7 +91,9 @@ This function uses `geiser-chibi-init-file' if it exists."
(format "(import %s)" module))
(defun geiser-chibi--exit-command () "(exit 0)")
+
;;
+
;; ;;; REPL startup
(defconst geiser-chibi-minimum-version "0.7.3")
diff --git a/scheme/chibi/geiser/geiser.scm b/scheme/chibi/geiser/geiser.scm
index 35a52b7..f12cbfc 100644
--- a/scheme/chibi/geiser/geiser.scm
+++ b/scheme/chibi/geiser/geiser.scm
@@ -30,27 +30,29 @@
;;> the result of evaluation \scheme{(write)}'d and the second
;;> field, \scheme{output}, contains everyting that the evaluation
;;> would print to the standard output.
+;;> In case of an exception, the message is formatted with
+;;> \scheme{(chibi show)} and written to both variables in addition
+;;> to whatever was already there.
(define (geiser:eval module form . rest)
rest
(guard (err
(else
- ;; TODO:We need to save output when returning errors too. The
- ;; output may very well be produced before an error occurs. But to
- ;; implement it wisely, we probably need something like two guard
- ;; expressions. For example, org-mode's ob-scheme.el needs it.:END
-
- (write `((result ,(show #f err))))))
+ (write ; to standard output
+ "Geiser-chibi falure in scheme code.")
+ (show #t err)))
(let* ((output (open-output-string))
(result (parameterize ((current-output-port output))
- (if module
- (let ((mod (module-env (find-module module))))
- (eval form mod))
- (eval form))
- )
- ))
- (write `((result ,(write-to-string result))
- (output . ,(get-output-string output))))))
+ (guard (err
+ (else (show #t err)
+ (write-to-string (show #f err))))
+ (if module
+ (let ((mod (module-env (find-module module))))
+ (eval form mod))
+ (eval form))))))
+ (write ; to standard output (to comint)
+ `((result ,(write-to-string result))
+ (output . ,(get-output-string output))))))
(values))
- [nongnu] elpa/geiser-chibi f52a4ec 16/38: Fix indenting and parenthesis positioning., (continued)
- [nongnu] elpa/geiser-chibi f52a4ec 16/38: Fix indenting and parenthesis positioning., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 2a4fb4f 10/38: Add a TODO tag about symbol-location to geiser.sld, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi c860e3a 12/38: Add error reporting about missing symbols to geiser-edit.el, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 0272694 05/38: Use (car (process-lines ...)) instead of (shell-command ...), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 41929c9 03/38: Clean-up elisp code, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 5b016dd 18/38: geiser-chibi: allow passing custom argument list to chibi scheme process, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 2e725bb 23/38: Add printing a stack trace to the user code exceptions., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 420909d 28/38: Use cl-lib instead of cl, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 71d003f 29/38: Fix typos, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi e57722a 14/38: Add a first version of geiser:symbol-location for local files., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi c32bd70 20/38: Rewrite geiser:eval in order to make it compatible with org-babel.,
Philip Kaludercic <=
- [nongnu] elpa/geiser-chibi 354d399 21/38: Allow additional parameters to Chibi binary, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 7606cc3 27/38: Delete trailing whitespace, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi d153c2b 32/38: adapting to new scheme load path, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 9c6afab 36/38: fix for version, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 285d8ba 24/38: Begin the summary lines of all elisp libraries with three semicolons, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 5e7ba0f 25/38: Mark the beginning of code part of elisp libraries with Code: heading, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi bdde589 15/38: Add better support for geiser:symbol-location. Add guards., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi c7beaf1 17/38: Fix a comment typo., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi b92c0c9 19/38: Add a TODO entry for adding output to erroneous evaluations., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 60464d6 22/38: Add a few minor tweaks., Philip Kaludercic, 2021/08/01