diff --git a/lisp/org-element.el b/lisp/org-element.el index ab585115a..99763e3f9 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -3328,13 +3328,14 @@ Assume point is at the beginning of the snippet." (- contents-end begin)))) (post-blank (skip-chars-forward " \t")) (end (point))) - (org-element-create - 'export-snippet - (list :back-end backend - :value value - :begin begin - :end end - :post-blank post-blank)))))) + (when contents-end ; No match when no trailing "@@". + (org-element-create + 'export-snippet + (list :back-end backend + :value value + :begin begin + :end end + :post-blank post-blank))))))) (defun org-element-export-snippet-interpreter (export-snippet _) "Interpret EXPORT-SNIPPET object as Org syntax." diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index d95195f0d..92fd63078 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -4607,7 +4607,13 @@ Text (should (eq 'link (org-test-with-temp-text "* Headline :file:tags: :real:tag:" - (org-element-type (org-element-context)))))) + (org-element-type (org-element-context))))) + ;; Do not parse partial export snippets. + (should-not + (eq 'export-snippet + (org-test-with-temp-text + "@@latex:\n\nparagraph\n\n@@" + (org-element-type (org-element-context))))))