diff options
author | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-10-14 21:47:07 +0200 |
---|---|---|
committer | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-10-14 21:49:41 +0200 |
commit | b7c5cf5d446aeef02bf7970fb463ef813c92b509 (patch) | |
tree | 11ff3cbeacaa7d8bebef9b5ba5580ac57eddea21 | |
parent | c65abd85776734d894a4594c0561eb120a0449e2 (diff) | |
download | org-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.el | 10 | ||||
-rw-r--r-- | testing/lisp/test-org-element.el | 17 |
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 |