From 20374f69e891d1d50d3930fa85d29bc89f64aa51 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sun, 1 Nov 2020 18:33:39 -0500 Subject: [PATCH] ob-exp: Restore evaluation query for lob calls during export MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lisp/ob-exp.el (org-babel-exp-results): Fix a regression from v9.0 that led to silently executing lob calls on export despite a non-nil value of org-confirm-babel-evaluate. * testing/lisp/test-ob-lob.el (test-ob-lob/confirm-evaluate): New test. 56bf3d789 (Babel: avoid superfluous confirmation for internal wrapper, 2013-04-10) let-bound org-confirm-babel-evaluate to nil in two spots to prevent double querying for lob calls. These overrides were no longer needed following the refactoring in dbb375fdf (Simplify Babel calls evaluation, 2016-06-16). However, that commit dropped only one of the spots, and, as a result, disabled confirmation unconditionally when exporting lob calls. Drop the remaining org-confirm-babel-evaluate override. Reported-by: 吴锐扬 Ref: https://orgmode.org/list/5362C0A0-632F-4C87-8FA1-915F0F53D8B8@gmail.com --- lisp/ob-exp.el | 3 +-- testing/lisp/test-ob-lob.el | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lisp/ob-exp.el b/lisp/ob-exp.el index 1830730e4..46506fcfd 100644 --- a/lisp/ob-exp.el +++ b/lisp/ob-exp.el @@ -405,8 +405,7 @@ inhibit insertion of results into the buffer." (`lob (save-excursion (goto-char (nth 5 info)) - (let (org-confirm-babel-evaluate) - (org-babel-execute-src-block nil info))))))))) + (org-babel-execute-src-block nil info)))))))) (provide 'ob-exp) diff --git a/testing/lisp/test-ob-lob.el b/testing/lisp/test-ob-lob.el index 4b29918ae..bf3398077 100644 --- a/testing/lisp/test-ob-lob.el +++ b/testing/lisp/test-ob-lob.el @@ -250,6 +250,34 @@ call_test-newline[:eval yes :results raw]('(1\n2))" #+call: bar()" (org-babel-execute-src-block nil (org-babel-lob-get-info)))))) +(ert-deftest test-ob-lob/confirm-evaluate () + "Test confirmation when exporting lob calls." + ;; With the default `org-confirm-babel-evaluate' of t, the caller is + ;; queried one time. + (should + (= 1 + (let ((org-export-use-babel t) + (org-confirm-babel-evaluate t) + (confirm-evaluate-calls 0)) + (cl-letf (((symbol-function 'yes-or-no-p) + (lambda (&rest _ignore) + (cl-incf confirm-evaluate-calls) + t))) + (org-test-with-temp-text + " +#+name: foo +#+begin_src emacs-lisp + nil +#+end_src + +#+call: foo()" + (let ((string (buffer-string))) + (with-temp-buffer + (org-mode) + (insert string) + (org-babel-exp-process-buffer) + confirm-evaluate-calls)))))))) + (provide 'test-ob-lob) ;;; test-ob-lob.el ends here