summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2017-05-04 00:03:00 -0400
committerKyle Meyer <kyle@kyleam.com>2017-05-04 00:03:00 -0400
commitc28ec3a17011aafa0bee7dcd2e12d3e7d5a3a87d (patch)
treedf2a6202d7f6db21c21f1709ffb9209da01ed71c
parentcbe544edf33a97ffffd3a03f550ffa85e45c18e4 (diff)
parentfef346798f9230644d389e21d33990bfac65e884 (diff)
downloadorg-mode-c28ec3a17011aafa0bee7dcd2e12d3e7d5a3a87d.tar.gz
Merge branch 'maint'
-rw-r--r--contrib/lisp/ox-extra.el25
1 files changed, 23 insertions, 2 deletions
diff --git a/contrib/lisp/ox-extra.el b/contrib/lisp/ox-extra.el
index 85dae47..9cd6980 100644
--- a/contrib/lisp/ox-extra.el
+++ b/contrib/lisp/ox-extra.el
@@ -56,7 +56,7 @@
;;; Code:
(require 'ox)
-(eval-when-compile (require 'cl))
+(require 'cl-lib)
(defun org-latex-header-blocks-filter (backend)
(when (org-export-derived-backend-p backend 'latex)
@@ -72,8 +72,10 @@
(org-element-property :post-affiliated block)))))))
(mapc (lambda (pos)
(goto-char (nth 2 pos))
- (destructuring-bind
+ (cl-destructuring-bind
(beg end &rest ignore)
+ ;; FIXME: `org-edit-src-find-region-and-lang' was
+ ;; removed in 9c06f8cce (2014-11-11).
(org-edit-src-find-region-and-lang)
(let ((contents-lines (split-string
(buffer-substring-no-properties beg end)
@@ -150,8 +152,27 @@ parent."
(org-element-contents object)))
(org-element-extract-element object)))
info nil)
+ (org-extra--merge-sections data backend info)
data)
+(defun org-extra--merge-sections (data _backend info)
+ (org-element-map data 'headline
+ (lambda (hl)
+ (let ((sections
+ (cl-loop
+ for el in (org-element-map (org-element-contents hl)
+ '(headline section) #'identity info)
+ until (eq (org-element-type el) 'headline)
+ collect el)))
+ (when (and sections
+ (> (length sections) 1))
+ (apply #'org-element-adopt-elements
+ (car sections)
+ (cl-mapcan (lambda (s) (org-element-contents s))
+ (cdr sections)))
+ (mapc #'org-element-extract-element (cdr sections)))))
+ info))
+
(defconst ox-extras
'((latex-header-blocks org-latex-header-blocks-filter org-export-before-parsing-hook)
(ignore-headlines org-export-ignore-headlines org-export-filter-parse-tree-functions))