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:
parent
5b59e16c9e
commit
c9d617b322
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user