org-element: Fix parsing of a list in a block in a list

* lisp/org-element.el (org-element--parse-elements,
  org-element-at-point): Fix parsing of a list in a block in a list.
* testing/lisp/test-org-element.el: Add test.
This commit is contained in:
Nicolas Goaziou 2012-12-16 00:37:49 +01:00
parent c0675b478e
commit 20839ced71
2 changed files with 16 additions and 4 deletions

View File

@ -3808,7 +3808,8 @@ Elements are accumulated into ACC."
'section))
(plain-list 'item)
(table 'table-row))
(org-element-property :structure element)
(and (memq type '(item plain-list))
(org-element-property :structure element))
granularity visible-only element))
;; ELEMENT has contents. Parse objects inside, if
;; GRANULARITY allows it.
@ -4249,8 +4250,11 @@ first element of current section."
(plain-list
(setq special-flag 'item
struct (org-element-property :structure element)))
(table (setq special-flag 'table-row))
(otherwise (setq special-flag nil)))
(item (setq special-flag nil))
(property-drawer
(setq special-flag 'node-property struct nil))
(table (setq special-flag 'table-row struct nil))
(otherwise (setq special-flag nil struct nil)))
(setq end cend)
(goto-char cbeg)))))))))))

View File

@ -2459,7 +2459,15 @@ Paragraph \\alpha."
(equal '(paragraph center-block)
(org-test-with-temp-text "#+BEGIN_CENTER\nA\n#+END_CENTER\nZ"
(progn (search-forward "Z")
(mapcar 'org-element-type (org-element-at-point t)))))))
(mapcar 'org-element-type (org-element-at-point t))))))
;; Parse a list within a block itself contained in a list.
(should
(eq 'plain-list
(org-test-with-temp-text
"- outer\n #+begin_center\n - inner\n #+end_center"
(search-forward "inner")
(beginning-of-line)
(org-element-type (org-element-at-point))))))
(ert-deftest test-org-element/context ()
"Test `org-element-context' specifications."