diff options
author | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-10-14 21:51:59 +0200 |
---|---|---|
committer | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-10-14 21:51:59 +0200 |
commit | 23aa91025973f1bd351f90adab4f85cdaecaaa6c (patch) | |
tree | 96afc5fb52d6609e0f81d34830e3d77e425dc2eb | |
parent | c1c0c70c8921550dc790e9f9ac7a56dacb4147bc (diff) | |
parent | b7c5cf5d446aeef02bf7970fb463ef813c92b509 (diff) | |
download | org-mode-23aa91025973f1bd351f90adab4f85cdaecaaa6c.tar.gz |
Merge branch 'maint'
-rw-r--r-- | lisp/org-element.el | 12 | ||||
-rw-r--r-- | testing/lisp/test-org-element.el | 37 |
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 |