فهرست منبع

Docbook export: Respect example indentation when parsing plain lists

Examples and source code blocks that are not sufficiently indented
will now terminate plain lists.
Carsten Dominik 16 سال پیش
والد
کامیت
21eb0b8b65
2فایلهای تغییر یافته به همراه26 افزوده شده و 0 حذف شده
  1. 4 0
      lisp/ChangeLog
  2. 22 0
      lisp/org-docbook.el

+ 4 - 0
lisp/ChangeLog

@@ -1,5 +1,9 @@
 2009-06-07  Carsten Dominik  <carsten.dominik@gmail.com>
 2009-06-07  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
+	* org-docbook.el (org-export-docbook-close-lists-maybe): New function.
+	(org-export-as-docbook): Close lists when original indentation
+	mandates it.
+
 	* org-html.el (org-export-html-close-lists-maybe): New function.
 	* org-html.el (org-export-html-close-lists-maybe): New function.
 	(org-export-as-html): Close lists when original indentation
 	(org-export-as-html): Close lists when original indentation
 	mandates it.
 	mandates it.

+ 22 - 0
lisp/org-docbook.el

@@ -644,6 +644,7 @@ publishing directory."
 
 
 	  ;; Protected HTML
 	  ;; Protected HTML
 	  (when (get-text-property 0 'org-protected line)
 	  (when (get-text-property 0 'org-protected line)
+	    (org-export-docbook-close-lists-maybe line)
 	    (let (par)
 	    (let (par)
 	      (when (re-search-backward
 	      (when (re-search-backward
 		     "\\(<para>\\)\\([ \t\r\n]*\\)\\=" (- (point) 100) t)
 		     "\\(<para>\\)\\([ \t\r\n]*\\)\\=" (- (point) 100) t)
@@ -1144,6 +1145,27 @@ publishing directory."
       (insert "</listitem></varlistentry>\n")
       (insert "</listitem></varlistentry>\n")
     (insert "</listitem>\n")))
     (insert "</listitem>\n")))
 
 
+(defvar in-local-list)
+(defvar local-list-indent)
+(defun org-export-docbook-close-lists-maybe (line)
+  (let ((ind (get-text-property 0 'original-indentation line))
+	didclose)
+    (when ind
+      (while (and in-local-list
+		  (or (and (= ind (car local-list-indent))
+			   (not starter))
+		      (< ind (car local-list-indent))))
+	(setq didclose t)
+	(let ((listtype (car local-list-type)))
+	  (org-export-docbook-close-li listtype)
+	  (insert (cond
+		   ((equal listtype "o") "</orderedlist>\n")
+			   ((equal listtype "u") "</itemizedlist>\n")
+			   ((equal listtype "d") "</variablelist>\n"))))
+	(pop local-list-type) (pop local-list-indent)
+	(setq in-local-list local-list-indent))
+      (and didclose (org-export-docbook-open-para)))))
+
 (defun org-export-docbook-level-start (level title)
 (defun org-export-docbook-level-start (level title)
   "Insert a new level in DocBook export.
   "Insert a new level in DocBook export.
 When TITLE is nil, just close all open levels."
 When TITLE is nil, just close all open levels."