diff --git a/lisp/org-element.el b/lisp/org-element.el index 46e668cc9..6bcfa855f 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -2412,6 +2412,7 @@ LIMIT bounds the search. Return value is a cons cell whose CAR is `entity' or `latex-fragment' and CDR is beginning position." (save-excursion + (unless (bolp) (backward-char)) (let ((matchers (remove "begin" (plist-get org-format-latex-options :matchers))) ;; ENTITY-RE matches both LaTeX commands and Org entities. @@ -3089,6 +3090,7 @@ LIMIT bounds the search. Return value is a cons cell whose CAR is either `subscript' or `superscript' and CDR is beginning position." (save-excursion + (unless (bolp) (backward-char)) (when (re-search-forward org-match-substring-regexp limit t) (cons (if (string= (match-string 2) "_") 'subscript 'superscript) (match-beginning 2))))) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index 887ca1b73..e7cfadabf 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -1074,7 +1074,13 @@ e^{i\\pi}+1=0 (should (org-test-with-temp-text "\\[a\\]" (org-element-map - (org-element-parse-buffer) 'latex-fragment 'identity))))) + (org-element-parse-buffer) 'latex-fragment 'identity))) + ;; Test fragment at the beginning of an item. + (should + (eq 'latex-fragment + (org-test-with-temp-text "- $x$" + (progn (search-forward "$") + (org-element-type (org-element-context)))))))) ;;;; Line Break @@ -1511,7 +1517,13 @@ Outside list" ;; With braces. (should (org-test-with-temp-text "a_{b}" - (org-element-map (org-element-parse-buffer) 'subscript 'identity)))) + (org-element-map (org-element-parse-buffer) 'subscript 'identity))) + ;; At the beginning of an item. + (should + (eq 'subscript + (org-test-with-temp-text "- _b" + (progn (search-forward "_") + (org-element-type (org-element-context))))))) ;;;; Superscript @@ -1525,7 +1537,13 @@ Outside list" ;; With braces. (should (org-test-with-temp-text "a^{b}" - (org-element-map (org-element-parse-buffer) 'superscript 'identity)))) + (org-element-map (org-element-parse-buffer) 'superscript 'identity))) + ;; At the beginning of an item. + (should + (eq 'superscript + (org-test-with-temp-text "- ^b" + (progn (search-forward "^") + (org-element-type (org-element-context))))))) ;;;; Table