emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] ob-core: Display warning on failure to read results


From: Kyle Meyer
Subject: [PATCH] ob-core: Display warning on failure to read results
Date: Thu, 21 May 2020 04:16:40 +0000

Greg Minshall writes:

> hi.  i'm running R code from an org mode file.  i was having a problem
> where a code block that *was* returning a value result was not returning
> the results into the buffer.
>
> (after long head-scratching) this appears to be because my code was
> returning more lines of results than org-table-convert-region-max-lines.
>
> but, i was *not* seeing any error message, nothing to indicate to me why
> i was getting no results.  in the test program below, when trying to
> return more than 1000 lines, one sees, in the echo area, "Code block
> returned no value".  if you go to *Messages*, there you can see an error
> message.

Thanks for the report and for providing a minimal example.

> i think somehow org/babel should make sure the user sees what limitation
> s/he is running into.

I agree.  Here's my suggestion.

-- >8 --
Subject: [PATCH] ob-core: Display warning on failure to read results

* lisp/ob-core.el (org-babel-import-elisp-from-file): Show handled
errors with display-warning rather than a message because the latter
is quickly overridden by subsequent messages, making it difficult if
not impossible for the user to spot.

The scope of the save-window-excursion call would need to be reduced
for the display-warning buffer to be shown, but nothing appears to
change the window configuration, so just drop the
save-window-excursion call.

Reported-by: Greg Minshall <address@hidden>
<address@hidden>
---
 lisp/ob-core.el | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index ee0dc3d72..2a75ae734 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -2941,24 +2941,27 @@ (defun org-babel--string-to-number (string)
 (defun org-babel-import-elisp-from-file (file-name &optional separator)
   "Read the results located at FILE-NAME into an elisp table.
 If the table is trivial, then return it as a scalar."
-  (save-window-excursion
-    (let ((result
-          (with-temp-buffer
-            (condition-case err
-                (progn
-                  (org-table-import file-name separator)
-                  (delete-file file-name)
-                  (delq nil
-                        (mapcar (lambda (row)
-                                  (and (not (eq row 'hline))
-                                       (mapcar #'org-babel-string-read row)))
-                                (org-table-to-lisp))))
-              (error (message "Error reading results: %s" err) nil)))))
-      (pcase result
-       (`((,scalar)) scalar)
-       (`((,_ ,_ . ,_)) result)
-       (`(,scalar) scalar)
-       (_ result)))))
+  (let ((result
+        (with-temp-buffer
+          (condition-case err
+              (progn
+                (org-table-import file-name separator)
+                (delete-file file-name)
+                (delq nil
+                      (mapcar (lambda (row)
+                                (and (not (eq row 'hline))
+                                     (mapcar #'org-babel-string-read row)))
+                              (org-table-to-lisp))))
+            (error
+             (display-warning 'org-babel
+                              (format "Error reading results: %S" err)
+                              :error)
+             nil)))))
+    (pcase result
+      (`((,scalar)) scalar)
+      (`((,_ ,_ . ,_)) result)
+      (`(,scalar) scalar)
+      (_ result))))
 
 (defun org-babel-string-read (cell)
   "Strip nested \"s from around strings."

base-commit: 5e2490bdf29a1eeff91b631425c38309cf368690
-- 
2.26.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]