diff options
author | Vladimir Panteleev <git@thecybershadow.net> | 2018-03-19 00:23:12 +0000 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2018-03-20 00:01:05 +0100 |
commit | 5b59e16c9ea7ffa04ab71f8d37f8b8677e89f735 (patch) | |
tree | 2628fdc105edfe11589931bdc22e650fc4bcfd77 | |
parent | e1f1acbbfb07ca49f857672a1f0648052753568f (diff) | |
download | org-mode-5b59e16c9ea7ffa04ab71f8d37f8b8677e89f735.tar.gz |
ob-table: Fix org-sbe's handling of quotes in cell values
* ob-table.el (org-sbe): org-sbe did the wrong thing when given a
reference to a cell containing quotes or backslashes, because it would
simply wrap any $-prefixed value in quotes, without any escaping. Fix
this by using "%S" (instead of "\"%s\"").
* test-ob-table.el: Add test.
-rw-r--r-- | lisp/ob-table.el | 2 | ||||
-rw-r--r-- | testing/lisp/test-ob-table.el | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/lisp/ob-table.el b/lisp/ob-table.el index f6a5c88..105aca5 100644 --- a/lisp/ob-table.el +++ b/lisp/ob-table.el @@ -112,7 +112,7 @@ as shown in the example below. (prog1 nil (setq quote t)) (prog1 (cond - (quote (format "\"%s\"" el)) + (quote (format "%S" el)) ((stringp el) (org-no-properties el)) (t el)) (setq quote nil)))) diff --git a/testing/lisp/test-ob-table.el b/testing/lisp/test-ob-table.el index da136cb..3d9b1d1 100644 --- a/testing/lisp/test-ob-table.el +++ b/testing/lisp/test-ob-table.el @@ -30,6 +30,28 @@ ;; (org-test-at-id "6d2ff4ce-4489-4e2a-9c65-e3f71f77d975" ;; (should (= 2 (sbe take-sqrt (n "4")))))) +(ert-deftest test-ob-table/sbe-quote () + "Test that `org-sbe' can correctly handle cell values containing quotes." + (org-test-table-target-expect + " +#+name: identity +#+begin_src emacs-lisp :eval yes + x +#+end_src + +| a\"b\"c | replace | +" + " +#+name: identity +#+begin_src emacs-lisp :eval yes + x +#+end_src + +| a\"b\"c | a\"b\"c | +" + 1 + "#+TBLFM: $2 = '(org-sbe identity (x $$1))")) + (provide 'test-ob-table) ;;; test-ob-table.el ends here |