emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Marc Nieper-Wißkirchen" <marc@nieper-wisskirchen.de>
To: Ihor Radchenko <yantar92@posteo.net>
Cc: "Rudolf Adamkovič" <salutis@me.com>, emacs-orgmode@gnu.org
Subject: Re: Babel (scheme): Evaluation errors are not shown
Date: Mon, 2 Jan 2023 10:52:03 +0100	[thread overview]
Message-ID: <CAEYrNrT7S-2RZ4Ev=Rxy=wLcOS3o92sjH7ED_Ys4k8za_9WHKQ@mail.gmail.com> (raw)
In-Reply-To: <87edsdmg2r.fsf@localhost>

[-- Attachment #1: Type: text/plain, Size: 806 bytes --]

Am Mo., 2. Jan. 2023 um 10:38 Uhr schrieb Ihor Radchenko <yantar92@posteo.net>:
>
> Marc Nieper-Wißkirchen <marc@nieper-wisskirchen.de> writes:
>
> > Fixed.
>
> Thanks!
> Note that your patch does not apply onto main.

Rebased against the latest main.  Please see the appended patch.

>
> > -           (setq result (if output
> > +              (let ((err (geiser-eval--retort-error ret)))
> > +                (setq result (cond
> > +                              (err nil)
>
> We may still provide output, if any. Even in the case of error. Not sure
> if it makes sense for ob-scheme though.

I switched the two cases, "err" and "output," in the attached patch.
For a value result, providing a result in case of an error does not
make sense.

Thanks for your patience,

Marc

[-- Attachment #2: 0001-lisp-ob-scheme.el-Do-not-hide-Scheme-evaluation-erro.patch --]
[-- Type: application/octet-stream, Size: 4493 bytes --]

From 4194e67f2edee60cc83e146f068d1892842de0da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= <marc@nieper-wisskirchen.de>
Date: Sat, 31 Dec 2022 15:41:59 +0100
Subject: [PATCH] lisp/ob-scheme.el: Do not hide Scheme evaluation errors.

* lisp/ob-eval.el (org-babel-eval-error-notify): Handle an exit code of nil.

* lisp/ob-scheme.el (org-babel-expand-body:scheme)
(org-babel-scheme-get-repl, org-babel-scheme-make-session-name)
(org-babel-scheme-execute-with-geiser)
(org-babel-scheme--table-or-string, org-babel-execute:scheme):
Display Scheme evaluation errors in an error buffer using
`org-babel-eval-error-notify'.
---
 lisp/ob-eval.el   | 11 ++++++++---
 lisp/ob-scheme.el | 20 +++++++++++++++-----
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/lisp/ob-eval.el b/lisp/ob-eval.el
index 6f6edb949..b9d1f7f23 100644
--- a/lisp/ob-eval.el
+++ b/lisp/ob-eval.el
@@ -37,16 +37,21 @@
 (declare-function org-babel-temp-file "ob-core" (prefix &optional suffix))
 
 (defun org-babel-eval-error-notify (exit-code stderr)
-  "Open a buffer to display STDERR and a message with the value of EXIT-CODE."
+  "Open a buffer to display STDERR and a message with the value of EXIT-CODE.
+If EXIT-CODE is nil, display the message without a code."
   (let ((buf (get-buffer-create org-babel-error-buffer-name)))
     (with-current-buffer buf
       (goto-char (point-max))
       (save-excursion
         (unless (bolp) (insert "\n"))
         (insert stderr)
-        (insert (format "[ Babel evaluation exited with code %S ]" exit-code))))
+        (if exit-code
+            (insert (format "[ Babel evaluation exited with code %S ]" exit-code))
+          (insert "[ Babel evaluation exited abnormally ]"))))
     (display-buffer buf))
-  (message "Babel evaluation exited with code %S" exit-code))
+  (if exit-code
+      (message "Babel evaluation exited with code %S" exit-code)
+    (message "Babel evaluation exited abnormally")))
 
 (defun org-babel-eval (command query)
   "Run COMMAND on QUERY.
diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
index 414bf13a6..e4ee7147c 100644
--- a/lisp/ob-scheme.el
+++ b/lisp/ob-scheme.el
@@ -66,6 +66,8 @@
 (declare-function geiser-repl-exit "ext:geiser-repl" (&optional arg))
 (declare-function geiser-eval--retort-output "ext:geiser-eval" (ret))
 (declare-function geiser-eval--retort-result-str "ext:geiser-eval" (ret prefix))
+(declare-function geiser-eval--retort-error "ext:geiser-eval" (ret))
+(declare-function geiser-eval--retort-error-msg "ext:geiser-eval" (err))
 
 (defcustom org-babel-scheme-null-to 'hline
   "Replace `null' and empty lists in scheme tables with this before returning."
@@ -194,22 +196,30 @@ is true; otherwise returns the last value."
                                   #'geiser-eval-region)
                                 (point-min)
                                 (point-max))))
-	      (setq result (if output
+              (let ((err (geiser-eval--retort-error ret)))
+                (setq result (cond
+                              (output
                                (or (geiser-eval--retort-output ret)
-				   "Geiser Interpreter produced no output")
-			     (geiser-eval--retort-result-str ret "")))))
+                                   "Geiser Interpreter produced no output"))
+                              (err nil)
+                              (t (geiser-eval--retort-result-str ret ""))))
                 (when (not repl)
                   (save-current-buffer (set-buffer repl-buffer)
                                        (geiser-repl-exit))
                   (set-process-query-on-exit-flag (get-buffer-process repl-buffer) nil)
-	    (kill-buffer repl-buffer)))))
+                  (kill-buffer repl-buffer))
+                (when err
+                  (let ((msg (geiser-eval--error-msg err)))
+                    (org-babel-eval-error-notify
+                     nil
+                     (concat (if (listp msg) (car msg) msg) "\n"))))))))))
     result))
 
 (defun org-babel-scheme--table-or-string (results)
   "Convert RESULTS into an appropriate elisp value.
 If the results look like a list or tuple, then convert them into an
 Emacs-lisp table, otherwise return the results as a string."
-  (let ((res (org-babel-script-escape results)))
+  (let ((res (and results (org-babel-script-escape results))))
     (cond ((listp res)
            (mapcar (lambda (el)
                      (if (or (null el) (eq el 'null))
-- 
2.34.1


  reply	other threads:[~2023-01-02  9:53 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-16 12:03 Babel (scheme): Evaluation errors are not shown Marc Nieper-Wißkirchen
2022-12-18 12:41 ` Ihor Radchenko
2022-12-20  0:39   ` Rudolf Adamkovič
2022-12-20 20:00     ` Marc Nieper-Wißkirchen
2022-12-31  9:50       ` Ihor Radchenko
2022-12-31 10:09         ` Marc Nieper-Wißkirchen
2022-12-31 10:19           ` Marc Nieper-Wißkirchen
2022-12-31 10:50             ` Marc Nieper-Wißkirchen
2022-12-31 12:07               ` Ihor Radchenko
2022-12-31 13:11                 ` Marc Nieper-Wißkirchen
2022-12-31 13:24                   ` Ihor Radchenko
2022-12-31 14:46                     ` Marc Nieper-Wißkirchen
2023-01-01 13:53                       ` Ihor Radchenko
2023-01-01 15:21                         ` Marc Nieper-Wißkirchen
2023-01-02  9:38                           ` Ihor Radchenko
2023-01-02  9:52                             ` Marc Nieper-Wißkirchen [this message]
2023-01-03  9:07                               ` Ihor Radchenko
2023-01-07 14:26                                 ` Marc Nieper-Wißkirchen
2023-01-25 13:12                                   ` Ihor Radchenko
2023-01-05  8:55                               ` Marc Nieper-Wißkirchen
2023-01-06 16:17                                 ` Ihor Radchenko
2023-01-06 16:20                                   ` Ihor Radchenko
2023-01-06 16:32                                     ` tomas
2023-01-06 20:47                                       ` Marc Nieper-Wißkirchen
2023-01-07 13:28                                   ` Bastien Guerry
2022-12-21 13:25     ` Ihor Radchenko
2022-12-29 15:34       ` Bastien Guerry
2023-01-03 23:28         ` Rudolf Adamkovič
2023-01-03 23:35           ` Bastien
2023-01-06 20:45             ` Rudolf Adamkovič

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEYrNrT7S-2RZ4Ev=Rxy=wLcOS3o92sjH7ED_Ys4k8za_9WHKQ@mail.gmail.com' \
    --to=marc@nieper-wisskirchen.de \
    --cc=emacs-orgmode@gnu.org \
    --cc=salutis@me.com \
    --cc=yantar92@posteo.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).