mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-23 07:18:53 +00:00
ob-core: Fix improper results indentation
* lisp/ob-core.el (org-babel-insert-result): Fix improper results indentation. * testing/lisp/test-ob.el (test-ob/preserve-results-indentation): Add test. Reported-by: Chunyang Xu <mail@xuchunyang.me> <http://lists.gnu.org/archive/html/emacs-orgmode/2017-08/msg00308.html>
This commit is contained in:
parent
5bf7730674
commit
24a76fbe57
@ -2269,21 +2269,22 @@ INFO may provide the values of these header arguments (in the
|
|||||||
((member "prepend" result-params))) ; already there
|
((member "prepend" result-params))) ; already there
|
||||||
(setq results-switches
|
(setq results-switches
|
||||||
(if results-switches (concat " " results-switches) ""))
|
(if results-switches (concat " " results-switches) ""))
|
||||||
(let ((wrap (lambda (start finish &optional no-escape no-newlines
|
(let ((wrap
|
||||||
inline-start inline-finish)
|
(lambda (start finish &optional no-escape no-newlines
|
||||||
(when inline
|
inline-start inline-finish)
|
||||||
(setq start inline-start)
|
(when inline
|
||||||
(setq finish inline-finish)
|
(setq start inline-start)
|
||||||
(setq no-newlines t))
|
(setq finish inline-finish)
|
||||||
(goto-char end)
|
(setq no-newlines t))
|
||||||
(insert (concat finish (unless no-newlines "\n")))
|
(let ((before-finish (marker-position end)))
|
||||||
(goto-char beg)
|
(goto-char end)
|
||||||
(insert (concat start (unless no-newlines "\n")))
|
(insert (concat finish (unless no-newlines "\n")))
|
||||||
(unless no-escape
|
(goto-char beg)
|
||||||
(org-escape-code-in-region (min (point) end) end))
|
(insert (concat start (unless no-newlines "\n")))
|
||||||
(goto-char end)
|
(unless no-escape
|
||||||
(unless no-newlines (goto-char (point-at-eol)))
|
(org-escape-code-in-region
|
||||||
(setq end (point-marker))))
|
(min (point) before-finish) before-finish))
|
||||||
|
(goto-char end))))
|
||||||
(tabulablep
|
(tabulablep
|
||||||
(lambda (r)
|
(lambda (r)
|
||||||
;; Non-nil when result R can be turned into
|
;; Non-nil when result R can be turned into
|
||||||
@ -2337,7 +2338,7 @@ INFO may provide the values of these header arguments (in the
|
|||||||
(insert (org-macro-escape-arguments
|
(insert (org-macro-escape-arguments
|
||||||
(org-babel-chomp result "\n"))))
|
(org-babel-chomp result "\n"))))
|
||||||
(t (goto-char beg) (insert result)))
|
(t (goto-char beg) (insert result)))
|
||||||
(setq end (point-marker))
|
(setq end (copy-marker (point) t))
|
||||||
;; possibly wrap result
|
;; possibly wrap result
|
||||||
(cond
|
(cond
|
||||||
((assq :wrap (nth 2 info))
|
((assq :wrap (nth 2 info))
|
||||||
@ -2374,11 +2375,12 @@ INFO may provide the values of these header arguments (in the
|
|||||||
((and (not (funcall tabulablep result))
|
((and (not (funcall tabulablep result))
|
||||||
(not (member "file" result-params)))
|
(not (member "file" result-params)))
|
||||||
(let ((org-babel-inline-result-wrap
|
(let ((org-babel-inline-result-wrap
|
||||||
;; Hard code {{{results(...)}}} on top of customization.
|
;; Hard code {{{results(...)}}} on top of
|
||||||
|
;; customization.
|
||||||
(format "{{{results(%s)}}}"
|
(format "{{{results(%s)}}}"
|
||||||
org-babel-inline-result-wrap)))
|
org-babel-inline-result-wrap)))
|
||||||
(org-babel-examplify-region beg end results-switches inline)
|
(org-babel-examplify-region
|
||||||
(setq end (point))))))
|
beg end results-switches inline)))))
|
||||||
;; Possibly indent results in par with #+results line.
|
;; Possibly indent results in par with #+results line.
|
||||||
(when (and (not inline) (numberp indent) (> indent 0)
|
(when (and (not inline) (numberp indent) (> indent 0)
|
||||||
;; In this case `table-align' does the work
|
;; In this case `table-align' does the work
|
||||||
@ -2391,6 +2393,7 @@ INFO may provide the values of these header arguments (in the
|
|||||||
(message "Code block returned no value.")
|
(message "Code block returned no value.")
|
||||||
(message "Code block produced no output."))
|
(message "Code block produced no output."))
|
||||||
(message "Code block evaluation complete.")))
|
(message "Code block evaluation complete.")))
|
||||||
|
(set-marker end nil)
|
||||||
(when outside-scope (narrow-to-region visible-beg visible-end))
|
(when outside-scope (narrow-to-region visible-beg visible-end))
|
||||||
(set-marker visible-beg nil)
|
(set-marker visible-beg nil)
|
||||||
(set-marker visible-end nil)))))))
|
(set-marker visible-end nil)))))))
|
||||||
|
@ -1405,7 +1405,57 @@ echo \"$data\"
|
|||||||
(org-babel-execute-src-block)
|
(org-babel-execute-src-block)
|
||||||
(let ((case-fold-search t)) (search-forward "RESULTS"))
|
(let ((case-fold-search t)) (search-forward "RESULTS"))
|
||||||
(list (org-get-indentation)
|
(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 ()
|
(ert-deftest test-ob/safe-header-args ()
|
||||||
"Detect safe and unsafe header args."
|
"Detect safe and unsafe header args."
|
||||||
|
Loading…
Reference in New Issue
Block a user