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

Reply via email to