summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2017-12-02 12:21:03 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-12-02 12:22:32 +0100
commitf53d1e2005a26a52427b7514f2d3e7cfa3ff2562 (patch)
treee75bbcb73e52f1964fe72258b33767ebf7703eb7
parent0cc231a7bb9f261640205943ddeb42ad8cefc43d (diff)
downloadorg-mode-f53d1e2005a26a52427b7514f2d3e7cfa3ff2562.tar.gz
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
-rw-r--r--lisp/ox.el12
-rw-r--r--testing/lisp/test-ox.el8
2 files changed, 15 insertions, 5 deletions
diff --git a/lisp/ox.el b/lisp/ox.el
index 3c052a2..8ea47d8 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -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
diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el
index 7942937..8b2ef81 100644
--- a/testing/lisp/test-ox.el
+++ b/testing/lisp/test-ox.el
@@ -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."