[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