浏览代码

LaTeX export: Respect example indentation when parsing plain lists

Carsten Dominik 16 年之前
父节点
当前提交
574f987670
共有 3 个文件被更改,包括 20 次插入8 次删除
  1. 8 0
      lisp/ChangeLog
  2. 8 6
      lisp/org-exp.el
  3. 4 2
      lisp/org-list.el

+ 8 - 0
lisp/ChangeLog

@@ -1,3 +1,11 @@
+2009-06-07  Carsten Dominik  <carsten.dominik@gmail.com>
+
+	* org-list.el (org-list-end): Respect the stored "original"
+	indentation when determining the end of the list.
+
+	* org-exp.el (org-export-replace-src-segments-and-examples):
+	Remember indentation correctly.
+
 2009-06-06  Carsten Dominik  <carsten.dominik@gmail.com>
 
 	* org-clock.el (org-clock-update-mode-line): Apply face

+ 8 - 6
lisp/org-exp.el

@@ -2121,22 +2121,24 @@ in the list) and remove property and value from the list in LISTVAR."
   "Replace source code segments with special code for export."
   (setq org-export-last-code-line-counter-value 0)
   (let ((case-fold-search t)
-	lang code trans opts)
+	lang code trans opts indent)
     (goto-char (point-min))
     (while (re-search-forward
-	    "\\(^\\([ \t]*\\)#\\+BEGIN_SRC:?[ \t]+\\([^ \t\n]+\\)\\(.*\\)\n\\([^\000]+?\n\\)[ \t]*#\\+END_SRC.*\\)\\|\\(^[ \t]*#\\+BEGIN_EXAMPLE:?\\(?:[ \t]+\\(.*\\)\\)?\n\\([^\000]+?\n\\)[ \t]*#\\+END_EXAMPLE.*\\)"
+	    "\\(^\\([ \t]*\\)#\\+BEGIN_SRC:?[ \t]+\\([^ \t\n]+\\)\\(.*\\)\n\\([^\000]+?\n\\)[ \t]*#\\+END_SRC.*\\)\\|\\(^\\([ \t]*\\)#\\+BEGIN_EXAMPLE:?\\(?:[ \t]+\\(.*\\)\\)?\n\\([^\000]+?\n\\)[ \t]*#\\+END_EXAMPLE.*\\)"
 	    nil t)
       (if (match-end 1)
 	  ;; src segments
 	  (setq lang (match-string 3)
 		opts (match-string 4)
-		code (match-string 5))
+		code (match-string 5)
+		indent (length (match-string 2)))
 	(setq lang nil
-	      opts (match-string 7)
-	      code (match-string 8)))
+	      opts (match-string 8)
+	      code (match-string 9)
+	      indent (length (match-string 7))))
 
       (setq trans (org-export-format-source-code-or-example
-		   backend lang code opts (length (match-string 2))))
+		   backend lang code opts indent))
       (replace-match trans t t))))
 
 (defvar htmlp)  ;; dynamically scoped

+ 4 - 2
lisp/org-list.el

@@ -1050,11 +1050,13 @@ cdr is the indentation string."
 
 (defun org-list-end (indent)
   "Return the position of the end of the list.
-INDENT is the indentation of the list."
+INDENT is the indentation of the list, as a string."
   (save-excursion
     (catch 'exit
       (while (or (looking-at org-list-beginning-re)
-		 (looking-at (concat "^" indent "[ \t]+\\|^$")))
+		 (looking-at (concat "^" indent "[ \t]+\\|^$"))
+		 (>= (or (get-text-property (point) 'original-indentation) -1)
+		     (length indent)))
 	(if (eq (point) (point-max))
 	    (throw 'exit (point-max)))
 	(forward-line 1)))