summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2017-08-13 16:21:21 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-08-13 16:21:21 +0200
commit15e992c6da0ee6bd4b11274aa51362bd9821c7ab (patch)
tree9efc3da252a36b602e84c40a92a67b66c3cd22e9
parent5f410132b51a48747d5e53156391bf449cc7362b (diff)
parent24a76fbe572923c55774bc9f8ecc8e6d1c7ff16d (diff)
downloadorg-mode-15e992c6da0ee6bd4b11274aa51362bd9821c7ab.tar.gz
Merge branch 'maint'
-rw-r--r--lisp/ob-core.el41
-rw-r--r--testing/lisp/test-ob.el52
2 files changed, 73 insertions, 20 deletions
diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index f8a6603..72e371b 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -2276,21 +2276,22 @@ INFO may provide the values of these header arguments (in the
((member "prepend" result-params))) ; already there
(setq results-switches
(if results-switches (concat " " results-switches) ""))
- (let ((wrap (lambda (start finish &optional no-escape no-newlines
- inline-start inline-finish)
- (when inline
- (setq start inline-start)
- (setq finish inline-finish)
- (setq no-newlines t))
- (goto-char end)
- (insert (concat finish (unless no-newlines "\n")))
- (goto-char beg)
- (insert (concat start (unless no-newlines "\n")))
- (unless no-escape
- (org-escape-code-in-region (min (point) end) end))
- (goto-char end)
- (unless no-newlines (goto-char (point-at-eol)))
- (setq end (point-marker))))
+ (let ((wrap
+ (lambda (start finish &optional no-escape no-newlines
+ inline-start inline-finish)
+ (when inline
+ (setq start inline-start)
+ (setq finish inline-finish)
+ (setq no-newlines t))
+ (let ((before-finish (marker-position end)))
+ (goto-char end)
+ (insert (concat finish (unless no-newlines "\n")))
+ (goto-char beg)
+ (insert (concat start (unless no-newlines "\n")))
+ (unless no-escape
+ (org-escape-code-in-region
+ (min (point) before-finish) before-finish))
+ (goto-char end))))
(tabulablep
(lambda (r)
;; Non-nil when result R can be turned into
@@ -2344,7 +2345,7 @@ INFO may provide the values of these header arguments (in the
(insert (org-macro-escape-arguments
(org-babel-chomp result "\n"))))
(t (goto-char beg) (insert result)))
- (setq end (point-marker))
+ (setq end (copy-marker (point) t))
;; possibly wrap result
(cond
((assq :wrap (nth 2 info))
@@ -2381,11 +2382,12 @@ INFO may provide the values of these header arguments (in the
((and (not (funcall tabulablep result))
(not (member "file" result-params)))
(let ((org-babel-inline-result-wrap
- ;; Hard code {{{results(...)}}} on top of customization.
+ ;; Hard code {{{results(...)}}} on top of
+ ;; customization.
(format "{{{results(%s)}}}"
org-babel-inline-result-wrap)))
- (org-babel-examplify-region beg end results-switches inline)
- (setq end (point))))))
+ (org-babel-examplify-region
+ beg end results-switches inline)))))
;; Possibly indent results in par with #+results line.
(when (and (not inline) (numberp indent) (> indent 0)
;; In this case `table-align' does the work
@@ -2398,6 +2400,7 @@ INFO may provide the values of these header arguments (in the
(message "Code block returned no value.")
(message "Code block produced no output."))
(message "Code block evaluation complete.")))
+ (set-marker end nil)
(when outside-scope (narrow-to-region visible-beg visible-end))
(set-marker visible-beg nil)
(set-marker visible-end nil)))))))
diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el
index a1bdc54..4f0f6be 100644
--- a/testing/lisp/test-ob.el
+++ b/testing/lisp/test-ob.el
@@ -1405,7 +1405,57 @@ echo \"$data\"
(org-babel-execute-src-block)
(let ((case-fold-search t)) (search-forward "RESULTS"))
(list (org-get-indentation)
- (progn (forward-line) (org-get-indentation)))))))
+ (progn (forward-line) (org-get-indentation))))))
+ ;; Properly indent examplified blocks.
+ (should
+ (equal
+ " #+begin_example
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ #+end_example
+"
+ (org-test-with-temp-text
+ " #+begin_src emacs-lisp :results output
+ (dotimes (i 10) (princ i) (princ \"\\n\"))
+ #+end_src"
+ (org-babel-execute-src-block)
+ (search-forward "begin_example")
+ (downcase
+ (buffer-substring-no-properties (line-beginning-position)
+ (point-max))))))
+ ;; Properly indent "org" blocks.
+ (should
+ (equal
+ " #+begin_src org
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ #+end_src
+"
+ (org-test-with-temp-text
+ " #+begin_src emacs-lisp :results output org
+ (dotimes (i 10) (princ i) (princ \"\\n\"))
+ #+end_src"
+ (org-babel-execute-src-block)
+ (search-forward "begin_src org")
+ (downcase
+ (buffer-substring-no-properties (line-beginning-position)
+ (point-max)))))))
(ert-deftest test-ob/safe-header-args ()
"Detect safe and unsafe header args."