瀏覽代碼

Merge branch 'maint'

Kyle Meyer 8 年之前
父節點
當前提交
c28ec3a170
共有 1 個文件被更改,包括 23 次插入2 次删除
  1. 23 2
      contrib/lisp/ox-extra.el

+ 23 - 2
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))