From b1e7b86fda3d6a61ae1c3f30439567cf3f5a7ec5 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 16 Oct 2013 10:36:48 +0200 Subject: [PATCH] org-element: Fix block parsing in lists * lisp/org-element.el (org-element--list-struct): Fix block parsing in lists. * testing/lisp/test-org-element.el: Add test. Reported-by: Omid --- lisp/org-element.el | 5 +++-- testing/lisp/test-org-element.el | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index f57ef1cae..3e753655f 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -1230,9 +1230,10 @@ CONTENTS is the contents of the element." (throw 'exit (sort struct 'car-less-than-car)))))) ;; Skip blocks (any type) and drawers contents. (cond - ((and (looking-at "#\\+BEGIN\\(:[ \t]*$\\|_\\S-\\)+") + ((and (looking-at "#\\+BEGIN\\(:\\|_\\S-+\\)") (re-search-forward - (format "^[ \t]*#\\+END%s[ \t]*$" (match-string 1)) + (format "^[ \t]*#\\+END%s[ \t]*$" + (match-string-no-properties 1)) limit t))) ((and (looking-at drawers-re) (re-search-forward "^[ \t]*:END:[ \t]*$" limit t)))) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index 7d36ba59e..da9011e71 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -1127,7 +1127,13 @@ DEADLINE: <2012-03-29 thu.>" (equal '(("- item")) (org-test-with-temp-text "- - item" (org-element-map - (org-element-parse-buffer) 'paragraph 'org-element-contents))))) + (org-element-parse-buffer) 'paragraph 'org-element-contents)))) + ;; Block in an item: ignore indentation within the block. + (should + (org-test-with-temp-text "- item\n #+begin_src emacs-lisp\n(+ 1 1)\n #+end_src" + (forward-char) + (goto-char (org-element-property :end (org-element-at-point))) + (eobp)))) ;;;; Keyword -- 2.11.4.GIT