summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2012-10-14 21:51:59 +0200
committerNicolas Goaziou <n.goaziou@gmail.com>2012-10-14 21:51:59 +0200
commit23aa91025973f1bd351f90adab4f85cdaecaaa6c (patch)
tree96afc5fb52d6609e0f81d34830e3d77e425dc2eb
parentc1c0c70c8921550dc790e9f9ac7a56dacb4147bc (diff)
parentb7c5cf5d446aeef02bf7970fb463ef813c92b509 (diff)
downloadorg-mode-23aa91025973f1bd351f90adab4f85cdaecaaa6c.tar.gz
Merge branch 'maint'
-rw-r--r--lisp/org-element.el12
-rw-r--r--testing/lisp/test-org-element.el37
2 files changed, 44 insertions, 5 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index da17de6..6b4dd29 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -2495,6 +2495,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.
@@ -3189,6 +3190,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)))))
@@ -3984,8 +3986,14 @@ type, as a symbol.
OBJECTS is the previous candidates alist."
;; Filter out any object found but not belonging to RESTRICTION.
- (setq objects (org-remove-if-not (lambda (obj) (memq (car obj) restriction))
- objects))
+ (setq objects
+ (org-remove-if-not
+ (lambda (obj)
+ (let ((type (car obj)))
+ (memq (or (cdr (assq type org-element-object-successor-alist))
+ type)
+ restriction)))
+ objects))
(let (next-candidates types-to-search)
;; If no previous result, search every object type in RESTRICTION.
;; Otherwise, keep potential candidates (old objects located after
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index b3b7e4c..3c4ef81 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -1093,7 +1093,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
@@ -1576,7 +1582,19 @@ 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))))))
+ ;; Multiple subscripts in a paragraph.
+ (should
+ (= 2
+ (org-test-with-temp-text "a_b and c_d"
+ (length
+ (org-element-map (org-element-parse-buffer) 'subscript 'identity))))))
;;;; Superscript
@@ -1590,7 +1608,20 @@ 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))))))
+ ;; Multiple superscript in a paragraph.
+ (should
+ (= 2
+ (org-test-with-temp-text "a^b and c^d"
+ (length
+ (org-element-map
+ (org-element-parse-buffer) 'superscript 'identity))))))
;;;; Table