diff --git a/lisp/ob-core.el b/lisp/ob-core.el index f69538f78..9d72cf870 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -2464,7 +2464,11 @@ INFO may provide the values of these header arguments (in the (cons 'unordered (mapcar (lambda (e) - (list (if (stringp e) e (format "%S" e)))) + (cond + ((stringp e) (list e)) + ((listp e) + (mapcar (lambda (x) (format "%S" x)) e)) + (t (list (format "%S" e))))) (if (listp result) result (split-string result "\n" t)))) '(:splicep nil :istart "- " :iend "\n"))) diff --git a/testing/lisp/test-ob-shell.el b/testing/lisp/test-ob-shell.el index 7aa45cc8a..b0d9beff4 100644 --- a/testing/lisp/test-ob-shell.el +++ b/testing/lisp/test-ob-shell.el @@ -170,6 +170,20 @@ ob-comint.el, which was not previously tested." "#+BEGIN_SRC sh :results table\necho 'I \"want\" it all'\n#+END_SRC" (org-babel-execute-src-block))))) +(ert-deftest ob-shell/results-list () + "Test :results list." + (org-test-with-temp-text + "#+BEGIN_SRC sh :results list\necho 1\necho 2\necho 3\n#+END_SRC" + (should + (equal '((1) (2) (3)) + (org-babel-execute-src-block))) + (search-forward "#+results") + (beginning-of-line 2) + (should + (equal + "- 1\n- 2\n- 3\n" + (buffer-substring-no-properties (point) (point-max)))))) + ;;; Standard output (ert-deftest ob-shell/standard-output-after-success ()