瀏覽代碼

Export supports any list ender. Export to ascii has been fixed.

* org-exp.el (org-export-mark-list-ending): Differentiate between
  export backends, and replace `org-list-end-re' by a blank line upon
  exporting.
Nicolas Goaziou 15 年之前
父節點
當前提交
fe42a5e83e
共有 1 個文件被更改,包括 19 次插入8 次删除
  1. 19 8
      lisp/org-exp.el

+ 19 - 8
lisp/org-exp.el

@@ -1633,14 +1633,25 @@ These special cookies will later be interpreted by the backend."
   "Mark list endings with special cookies.
 These special cookies will later be interpreted by the backend.
 `org-list-end-re' is replaced by a blank line in the process."
-  ;; Backends using `org-list-parse-list' do not need this.
-  (unless (eq backend 'latex)
-    (goto-char (point-min))
-    (while (org-search-forward-unenclosed (org-item-re) nil 'move)
-      (goto-char (org-list-bottom-point))
-      (when (looking-at (org-list-end-re))
-	(replace-match "\n"))
-      (insert "ORG-LIST-END\n"))))
+  (let ((process-buffer
+	 (lambda (end-list-marker)
+	   (goto-char (point-min))
+	   (while (org-search-forward-unenclosed (org-item-re) nil t)
+	     (goto-char (org-list-bottom-point))
+	     (when (looking-at (org-list-end-re))
+	       (replace-match "\n"))
+	     (insert end-list-marker)))))
+  ;; We need to divide backends into 3 categories.
+  (cond
+   ;; 1. Backends using `org-list-parse-list' do not need markers.
+   ((memq backend '(latex))
+    nil)
+   ;; 2. Line-processing backends need to be told where lists end.
+   ((memq backend '(html docbook))
+    (funcall process-buffer "ORG-LIST-END\n"))
+   ;; 3. Others backends do not need to know this: clean list enders.
+   (t
+    (funcall process-buffer "\n")))))
 
 (defun org-export-attach-captions-and-attributes (backend target-alist)
   "Move #+CAPTION, #+ATTR_BACKEND, and #+LABEL text into text properties.