From 7d37898371de2b6b54af5e127dcefa719b4352da Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 12 May 2013 17:15:06 +0200 Subject: [PATCH] org-element: Be stricter when matching arguments in LaTeX environments * lisp/org-element.el (org-element--current-element): Be stricter when matching arguments in LaTeX environments. In particular, do not allow anything else than options and arguments in the opening line. * testing/lisp/test-org-element.el: Add tests. --- lisp/org-element.el | 3 ++- testing/lisp/test-org-element.el | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index 04df21b76..24988e87f 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -3775,7 +3775,8 @@ element it has to parse." (goto-char (car affiliated)) (org-element-keyword-parser limit nil)) ;; LaTeX Environment. - ((looking-at "[ \t]*\\\\begin{\\([A-Za-z0-9*]+\\)}") + ((looking-at + "[ \t]*\\\\begin{[A-Za-z0-9*]+}\\(\\[.*?\\]\\|{.*?}\\)*[ \t]*$") (org-element-latex-environment-parser limit affiliated)) ;; Drawer and Property Drawer. ((looking-at org-drawer-regexp) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index f03f54ac7..20f6f2e6d 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -1136,11 +1136,19 @@ e^{i\\pi}+1=0 :value (org-element-map (org-element-parse-buffer) 'latex-environment 'identity nil t))))) - ;; Allow environments with options. + ;; Allow environments with options and arguments. (should (eq 'latex-environment (org-test-with-temp-text "\\begin{theorem}[Euler]\ne^{i\\pi}+1=0\n\\end{theorem}" + (org-element-type (org-element-at-point))))) + (should + (eq 'latex-environment + (org-test-with-temp-text "\\begin{env}{arg}\nvalue\n\\end{env}" + (org-element-type (org-element-at-point))))) + (should-not + (eq 'latex-environment + (org-test-with-temp-text "\\begin{env}{arg} something\nvalue\n\\end{env}" (org-element-type (org-element-at-point))))))