Browse Source

Merge branch 'maint'

Nicolas Goaziou 1 month ago
parent
commit
0ace32b045
2 changed files with 15 additions and 5 deletions
  1. 8 4
      lisp/ox.el
  2. 7 1
      testing/lisp/test-ox.el

+ 8 - 4
lisp/ox.el

@@ -4031,11 +4031,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

+ 7 - 1
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."