branch: externals/org
commit 03a9dd88b3389f33d15cf1cd3320e952e5698f14
Author: Ihor Radchenko <[email protected]>
Commit: Ihor Radchenko <[email protected]>
ob-scheme: Fix variable assignment for list values
* lisp/ob-scheme.el (org-babel-scheme-expand-header-arg-vars): Quote
value in the assignment to avoid breakage when the value looks like a
functional call for Scheme.
* testing/lisp/test-ob-scheme.el (test-ob-scheme/variable-assignment):
New test.
Reported-by: [email protected]
Link:
https://orgmode.org/list/[email protected]
---
lisp/ob-scheme.el | 2 +-
testing/lisp/test-ob-scheme.el | 41 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
index 5a8c1dcd87..4a05f63731 100644
--- a/lisp/ob-scheme.el
+++ b/lisp/ob-scheme.el
@@ -85,7 +85,7 @@
"Expand :var header arguments given as VARS."
(mapconcat
(lambda (var)
- (format "(define %S %S)" (car var) (cdr var)))
+ (format "(define %S '%S)" (car var) (cdr var)))
vars
"\n"))
diff --git a/testing/lisp/test-ob-scheme.el b/testing/lisp/test-ob-scheme.el
index ccd34dcb84..02d1708f0b 100644
--- a/testing/lisp/test-ob-scheme.el
+++ b/testing/lisp/test-ob-scheme.el
@@ -117,6 +117,47 @@ x
(org-babel-execute-maybe)
(buffer-string)))))
+(ert-deftest test-ob-scheme/variable-assignment ()
+ "Test variable assignments."
+ (should
+ (equal "string"
+ (org-test-with-temp-text
+ "#+begin_src scheme :var a=\"string\"
+a
+#+end_src"
+ (org-babel-execute-src-block))))
+ (should
+ (equal 123
+ (org-test-with-temp-text
+ "#+begin_src scheme :var a=123
+a
+#+end_src"
+ (org-babel-execute-src-block))))
+ (should
+ (equal "AB"
+ (org-test-with-temp-text
+ "#+begin_src scheme :var a=(concat \"A\" \"B\")
+a
+#+end_src"
+ (org-babel-execute-src-block))))
+ (should
+ (equal '(("A" "B" "C"))
+ (org-test-with-temp-text
+ "#+name: test
+| A | B | C |
+
+<point>#+begin_src scheme :var a=test
+a
+#+end_src"
+ (org-babel-execute-src-block))))
+ (should
+ (equal '(("A" "B" "C"))
+ (org-test-with-temp-text
+ "#+begin_src scheme :var a='((\"A\" \"B\" \"C\"))
+a
+#+end_src"
+ (org-babel-execute-src-block)))))
+
(ert-deftest test-ob-scheme/unspecified ()
"Test <#unspecified> return value."
(should