From e340dde63e9ffd5a90d816617b0a8ed297ac83b0 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Tue, 15 Aug 2023 11:37:37 +0300 Subject: [PATCH] org-element-export-snippet-parser: Fix when no closing @@ * lisp/org-element.el (org-element-export-snippet-parser): Return nil when there is no closing @@. * testing/lisp/test-org-element.el (test-org-element/context): Add test. Reported-by: Tom Alexander Link: https://orgmode.org/list/fb61ea28-f004-4c25-adf7-69fc55683ed4@app.fastmail.com --- lisp/org-element.el | 15 ++++++++------- testing/lisp/test-org-element.el | 8 +++++++- 2 files changed, 15 insertions(+), 8 deletions(-) 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))))))