Let `or-export-last-sibling-p' handle discontinuous headlines

* lisp/ox.el (org-export-last-sibling-p): Handle discontinuous
  headlines.
* testing/lisp/test-ox.el (test-org-export/last-sibling-p): Add test.

Fixes: 24836
This commit is contained in:
Nicolas Goaziou 2017-12-02 12:21:03 +01:00
parent 0cc231a7bb
commit f53d1e2005
2 changed files with 15 additions and 5 deletions

View File

@ -4053,11 +4053,15 @@ used as a communication channel."
(memq (org-element-type (org-export-get-previous-element blob info))
'(nil section)))
(defun org-export-last-sibling-p (blob info)
"Non-nil when BLOB is the last sibling in its parent.
BLOB is an element or an object. INFO is a plist used as
(defun org-export-last-sibling-p (datum info)
"Non-nil when DATUM is the last sibling in its parent.
DATUM is an element or an object. INFO is a plist used as
a communication channel."
(not (org-export-get-next-element blob info)))
(let ((next (org-export-get-next-element datum info)))
(or (not next)
(and (eq 'headline (org-element-type datum))
(> (org-element-property :level datum)
(org-element-property :level next))))))
;;;; For Keywords

View File

@ -2677,7 +2677,13 @@ Para2"
(org-test-with-parsed-data "* Headline\n* Headline 2 :ignore:"
(org-element-map tree 'headline
(lambda (h) (if (org-export-last-sibling-p h info) 'yes 'no))
info))))))
info)))))
;; Handle gracefully discontinuous headings.
(should
(equal '(yes yes)
(org-test-with-parsed-data "** S\n* H"
(org-element-map tree 'headline
(lambda (h) (if (org-export-last-sibling-p h info) 'yes 'no)))))))
(ert-deftest test-org-export/handle-inlinetasks ()
"Test inlinetask export."