ob-core: Properly escape Org syntax when inserting results

* lisp/ob-core.el (org-babel-examplify-region): Escape Org syntax
  before wrapping it.

* testing/lisp/test-ob.el (test-ob/org-babel-insert-result): Add test.
  Renamed from `test-ob/org-babel-insert-result--improper-lists'.

Reported-by: D M German <dmg@turingmachine.org>
This commit is contained in:
Nicolas Goaziou 2017-03-01 22:19:04 +01:00
parent e1fa353e0a
commit a4eb60931a
2 changed files with 64 additions and 4 deletions

View File

@ -2463,7 +2463,9 @@ file's directory then expand relative links."
(funcall maybe-cap "#+begin_example")
results-switches)
(funcall maybe-cap "#+begin_example\n")))
(if (markerp end) (goto-char end) (forward-char (- end beg)))
(let ((p (point)))
(if (markerp end) (goto-char end) (forward-char (- end beg)))
(org-escape-code-in-region p (point)))
(insert (funcall maybe-cap "#+end_example\n")))))))))
(defun org-babel-update-block-body (new-body)

View File

@ -757,8 +757,8 @@ x
": 2"
(buffer-substring-no-properties (point-at-bol) (point-at-eol))))))
(ert-deftest test-ob/org-babel-insert-result--improper-lists ()
"Test `org-babel-insert-result' with improper lists."
(ert-deftest test-ob/org-babel-insert-result ()
"Test `org-babel-insert-result' specifications."
;; Do not error when output is an improper list.
(should
(org-test-with-temp-text
@ -767,7 +767,65 @@ x
'((1 . nil) (2 . 3))
#+END_SRC
"
(org-babel-execute-maybe) t)))
(org-babel-execute-maybe) t))
;; Escape headlines when producing an example block.
(should
(string-match-p
",\\* Not an headline"
(org-test-with-temp-text
"
<point>#+BEGIN_SRC emacs-lisp
\"* Not an headline\n\n\n\n\n\n\n\n\n\n\"
#+END_SRC
"
(org-babel-execute-maybe)
(buffer-string))))
;; Escape special syntax in example blocks.
(should
(string-match-p
",#\\+END_SRC"
(org-test-with-temp-text
"
<point>#+BEGIN_SRC emacs-lisp
\"#+END_SRC\n\n\n\n\n\n\n\n\n\n\"
#+END_SRC
"
(org-babel-execute-maybe)
(buffer-string))))
;; No escaping is done with other blocks or raw type.
(should
(string-match-p
",\\* Not an headline"
(org-test-with-temp-text
"
<point>#+BEGIN_SRC emacs-lisp
\"* Not an headline\"
#+END_SRC
"
(org-babel-execute-maybe)
(buffer-string))))
(should
(string-match-p
",\\* Not an headline"
(org-test-with-temp-text
"
<point>#+BEGIN_SRC emacs-lisp :results raw
\"* Not an headline\"
#+END_SRC
"
(org-babel-execute-maybe)
(buffer-string))))
(should-not
(string-match-p
",\\* Not an headline"
(org-test-with-temp-text
"
<point>#+BEGIN_SRC emacs-lisp :results drawer
\"* Not an headline\"
#+END_SRC
"
(org-babel-execute-maybe)
(buffer-string)))))
(ert-deftest test-ob/remove-inline-result ()
"Test `org-babel-remove-inline-result' honors whitespace."