From d8b983b85a4f657a67d628f430c53e504cfa2183 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 1 Jun 2013 21:38:15 +0200 Subject: [PATCH] org-element: Fix failing "plain-list-parser" test * lisp/org-element.el (org-element--list-struct): Fix failing "plain-list-parser" test. * testing/lisp/test-org-element.el: Update test. --- lisp/org-element.el | 15 ++++++++------- testing/lisp/test-org-element.el | 26 +++++++++++++------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index 463f696a6..5f2e700cf 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -1147,9 +1147,10 @@ CONTENTS is the contents of the element." ;;;; Plain List (defun org-element--list-struct (limit) -;; Return structure of list at point. Internal function. See -;; `org-list-struct' for details. + ;; Return structure of list at point. Internal function. See + ;; `org-list-struct' for details. (let ((case-fold-search t) + (top-ind limit) (item-re (org-item-re)) (drawers-re (concat ":\\(" (mapconcat 'regexp-quote org-drawers "\\|") @@ -1178,6 +1179,7 @@ CONTENTS is the contents of the element." ((looking-at item-re) (let ((ind (save-excursion (skip-chars-forward " \t") (current-column)))) + (setq top-ind (min top-ind ind)) (while (and items (<= ind (nth 1 (car items)))) (let ((item (pop items))) (setcar (nthcdr 6 item) (point)) @@ -1209,13 +1211,12 @@ CONTENTS is the contents of the element." ;; At some text line. Check if it ends any previous item. (t (let ((ind (progn (skip-chars-forward " \t") (current-column)))) + (when (<= ind top-ind) + (skip-chars-backward " \r\t\n") + (forward-line)) (while (<= ind (nth 1 (car items))) (let ((item (pop items))) - (setcar (nthcdr 6 item) - (if items (line-beginning-position) - (skip-chars-backward " \r\t\n") - (forward-line) - (point))) + (setcar (nthcdr 6 item) (line-beginning-position)) (push item struct) (unless items (throw 'exit (sort struct 'car-less-than-car)))))) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index 029b1618f..bed963340 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -1494,24 +1494,24 @@ e^{i\\pi}+1=0 (ert-deftest test-org-element/plain-list-parser () "Test `plain-list' parser." - (should - (org-test-with-temp-text "- item" - (org-element-map (org-element-parse-buffer) 'plain-list 'identity))) + (org-test-with-temp-text "- item" + (should (org-element-map (org-element-parse-buffer) 'plain-list 'identity))) ;; Blank lines after the list only belong to outer plain list. - (org-test-with-temp-text " + (should + (equal + '(t t) + (org-test-with-temp-text " - outer - inner Outside list" - (let ((endings (org-element-map - (org-element-parse-buffer) 'plain-list - (lambda (pl) (org-element-property :end pl))))) - ;; Move to ending of outer list. - (goto-char (car endings)) - (should (looking-at "Outside list")) - ;; Move to ending of inner list. - (goto-char (nth 1 endings)) - (should (looking-at "^$"))))) + (let ((endings (org-element-map (org-element-parse-buffer) 'plain-list + (lambda (pl) (org-element-property :end pl))))) + (list + ;; Move to ending of outer list. + (progn (goto-char (car endings)) (looking-at "Outside list")) + ;; Move to ending of inner list. + (progn (goto-char (nth 1 endings)) (looking-at "^$")))))))) ;;;; Planning -- 2.11.4.GIT