1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-11-23 07:18:53 +00:00

ob-table: Fix org-sbe's handling of list arguments

* ob-table.el (org-sbe): Add an explicit case for handling list
arguments. This avoids doing the wrong thing (%s-formatting a list,
thus losing syntax like double-quotes). This enables passing org-table
ranges through org-sbe in a simple and correct manner.

* test-ob-table.el: Add test.
This commit is contained in:
Vladimir Panteleev 2018-03-19 00:23:13 +00:00 committed by Nicolas Goaziou
parent 5b59e16c9e
commit c9d617b322
2 changed files with 34 additions and 6 deletions

View File

@ -132,12 +132,17 @@ as shown in the example below.
"("
(mapconcat
(lambda (var-spec)
(if (> (length (cdr var-spec)) 1)
(format "%S='%S"
(car var-spec)
(mapcar #'read (cdr var-spec)))
(format "%S=%s"
(car var-spec) (cadr var-spec))))
(cond
((> (length (cdr var-spec)) 1)
(format "%S='%S"
(car var-spec)
(mapcar #'read (cdr var-spec))))
((stringp (cadr var-spec))
(format "%S=%s"
(car var-spec) (cadr var-spec)))
(t
(format "%S=%S"
(car var-spec) (cadr var-spec)))))
',variables ", ")
")")))))
(org-babel-execute-src-block

View File

@ -52,6 +52,29 @@
1
"#+TBLFM: $2 = '(org-sbe identity (x $$1))"))
(ert-deftest test-ob-table/sbe-list ()
"Test that `org-sbe' can correctly handle ranges as lists."
(org-test-table-target-expect
"
#+name: concat
#+begin_src emacs-lisp :eval yes
(mapconcat #'identity x \"\")
#+end_src
| foo | bar | replace |
"
"
#+name: concat
#+begin_src emacs-lisp :eval yes
(mapconcat #'identity x \"\")
#+end_src
| foo | bar | foobar |
"
1
"#+TBLFM: $3 = '(org-sbe concat (x (list $1..$2)))"
"#+TBLFM: $3 = '(org-sbe concat (x $ (list $1..$2)))"))
(provide 'test-ob-table)
;;; test-ob-table.el ends here