Re: [PATCH] ob-core: Avoid table conversion warning for empty results

2020-08-31 Thread Kyle Meyer
Colin Baxter writes:

> >> This patch would squelch the inappropriate warning you report
> >> while not hiding other warnings.
>
> > Thank you. I'll apply the patch to my org-mode and report back.
>
> I have now applied the patch to my local org-mode git repository and it
> works with no reported errors. Thanks again.

Thanks for trying it out.  Applied (7bc18ebbe).



Re: [PATCH] ob-core: Avoid table conversion warning for empty results

2020-08-30 Thread Colin Baxter
Dear Kyle,

> Kyle Meyer  writes:

>> Kyle Meyer writes:
>>> Thanks for reporting.  The _display_ of this warning starts with
>>> my 14878f3f9 (ob-core: Display warning on failure to read
>>> results, 2020-05-21).  Here's the associated thread on the
>>> mailing list:
>>> .
>>> 
>>> On that commit's parent (eecee2266), the error is triggered and
>>> caught in the same way, but "Error reading results:
>>> (beginning-of-buffer)" is buried in the messages buffer rather
>>> than being displayed as a warning.
>>> 
>>> I'll need to take a closer look at what's going on, though I
>>> wouldn't be surprised if it's been around for a long time.

>> This patch would squelch the inappropriate warning you report
>> while not hiding other warnings.

> Thank you. I'll apply the patch to my org-mode and report back.

I have now applied the patch to my local org-mode git repository and it
works with no reported errors. Thanks again.

Best wishes,

Colin Baxter.


Colin Baxter
URL: http://www.Colin-Baxter.com
-
GnuPG fingerprint: 68A8 799C 0230 16E7 BF68  2A27 BBFA 2492 91F5 41C8
-



Re: [PATCH] ob-core: Avoid table conversion warning for empty results

2020-08-29 Thread Colin Baxter
Dear Kyle,

> Kyle Meyer  writes:

> Kyle Meyer writes:
>> Thanks for reporting.  The _display_ of this warning starts with
>> my 14878f3f9 (ob-core: Display warning on failure to read
>> results, 2020-05-21).  Here's the associated thread on the
>> mailing list:
>> .
>> 
>> On that commit's parent (eecee2266), the error is triggered and
>> caught in the same way, but "Error reading results:
>> (beginning-of-buffer)" is buried in the messages buffer rather
>> than being displayed as a warning.
>> 
>> I'll need to take a closer look at what's going on, though I
>> wouldn't be surprised if it's been around for a long time.

> This patch would squelch the inappropriate warning you report
> while not hiding other warnings.

Thank you. I'll apply the patch to my org-mode and report back.

Best wishes,

Colin Baxter.



[PATCH] ob-core: Avoid table conversion warning for empty results

2020-08-29 Thread Kyle Meyer
Kyle Meyer writes:

> Thanks for reporting.  The _display_ of this warning starts with my
> 14878f3f9 (ob-core: Display warning on failure to read results,
> 2020-05-21).  Here's the associated thread on the mailing list:
> <https://orgmode.org/list/2449663.1588516...@apollo2.minshall.org>.
>
> On that commit's parent (eecee2266), the error is triggered and caught
> in the same way, but "Error reading results: (beginning-of-buffer)" is
> buried in the messages buffer rather than being displayed as a warning.
>
> I'll need to take a closer look at what's going on, though I wouldn't be
> surprised if it's been around for a long time.

This patch would squelch the inappropriate warning you report while not
hiding other warnings.

-- >8 --
Subject: [PATCH] ob-core: Avoid table conversion warning for empty results

* lisp/ob-core.el (org-babel-import-elisp-from-file): Don't try to
convert empty file to a table.
* testing/lisp/test-ob.el (test-ob/import-elisp-from-file): Add tests.

If org-babel-import-elisp-from-file is called with an empty file
(which many ob- libraries do when there are no results), feeding that
to org-table-import leads to a beginning-of-buffer error.  Before
14878f3f9 (ob-core: Display warning on failure to read results,
2020-05-21), this error was hard to notice because, after catching it,
it was reported as a quickly buried message.  After that commit, it is
displayed as a warning, which is not appropriate for the common and
unproblematic case of empty results.

Avoid the warning by only doing the table conversion if the file has
content.  Another option would be to do the table conversion but add a
beginning-of-buffer arm to the surrounding condition-case.  However,
that risks swallowing other sources of that error.

Reported-by: Colin Baxter 
<https://orgmode.org/list/878se3nhbj@yandex.com>
---
 lisp/ob-core.el | 17 +++--
 testing/lisp/test-ob.el | 28 
 2 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index 578622232..5b79919e8 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -3003,13 +3003,18 @@ (defun org-babel-import-elisp-from-file (file-name 
 separator)
 (with-temp-buffer
   (condition-case err
   (progn
-(org-table-import file-name separator)
+(insert-file-contents file-name)
 (delete-file file-name)
-(delq nil
-  (mapcar (lambda (row)
-(and (not (eq row 'hline))
- (mapcar #'org-babel-string-read row)))
-  (org-table-to-lisp
+(let ((pmax (point-max)))
+  ;; If the file was empty, don't bother trying to
+  ;; convert the table.
+  (when (> pmax 1)
+(org-table-convert-region (point-min) pmax separator)
+(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)
diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el
index afaf13555..580cd7d89 100644
--- a/testing/lisp/test-ob.el
+++ b/testing/lisp/test-ob.el
@@ -2252,6 +2252,34 @@ (ert-deftest test-ob/string-to-number ()
 (should (=  0.1(org-babel--string-to-number "0.1")))
 (should (=  1.0(org-babel--string-to-number "1.0"
 
+(ert-deftest test-ob/import-elisp-from-file ()
+  "Test `org-babel-import-elisp-from-file'."
+  (should
+   (equal
+(org-test-with-temp-text-in-file "line 1\nline 2\n"
+  (cl-letf (((symbol-function 'display-warning)
+(lambda ( _) (error "No warnings should occur"))
+(org-table-convert-region-max-lines 2)))
+   (org-babel-import-elisp-from-file (buffer-file-name
+'(("line" 1)
+  ("line" 2
+  ;; If an error occurs during table conversion, it is shown with
+  ;; `display-warning' rather than as a message to make sure the
+  ;; caller sees it.
+  (should-error
+   (org-test-with-temp-text-in-file "line 1\nline 2\n"
+ (cl-letf (((symbol-function 'display-warning)
+   (lambda ( _) (error "Warning should be displayed")))
+  (org-table-convert-region-max-lines 1))
+   (org-babel-import-elisp-from-file (buffer-file-name)
+  ;; But an empty file (as is the case when there are no execution
+  ;; results) does not trigger a warning.
+  (should-not
+   (org-test-with-temp-text-in-file "&quo