summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2012-10-14 21:47:07 +0200
committerNicolas Goaziou <n.goaziou@gmail.com>2012-10-14 21:49:41 +0200
commitb7c5cf5d446aeef02bf7970fb463ef813c92b509 (patch)
tree11ff3cbeacaa7d8bebef9b5ba5580ac57eddea21
parentc65abd85776734d894a4594c0561eb120a0449e2 (diff)
downloadorg-mode-b7c5cf5d446aeef02bf7970fb463ef813c92b509.tar.gz
org-element: Fix parsing of objects of the same type in a single paragraph
* lisp/org-element.el (org-element--get-next-object-candidates): Fix parsing of objects of the same type in a single paragraph. * testing/lisp/test-org-element.el: Add tests.
-rw-r--r--lisp/org-element.el10
-rw-r--r--testing/lisp/test-org-element.el17
2 files changed, 23 insertions, 4 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 6bcfa85..b19fc3c 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -3886,8 +3886,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 e7cfada..55f5eae 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -1523,7 +1523,13 @@ Outside list"
(eq 'subscript
(org-test-with-temp-text "- _b"
(progn (search-forward "_")
- (org-element-type (org-element-context)))))))
+ (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
@@ -1543,7 +1549,14 @@ Outside list"
(eq 'superscript
(org-test-with-temp-text "- ^b"
(progn (search-forward "^")
- (org-element-type (org-element-context)))))))
+ (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