diff --git a/lisp/org-element.el b/lisp/org-element.el index 51b895850..ce4fff839 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -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))))))))))) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index 236db35f8..c6a3a7f65 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -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."