summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2013-10-24 17:15:23 +0200
committerNicolas Goaziou <n.goaziou@gmail.com>2013-10-24 17:15:23 +0200
commitff172be293bb3408fceefb27ac75716878182aae (patch)
tree16f79c689dd867c03a0ff8081fdfa89f9e8f59e4
parent6541e1632f51b4ade0c9318f756f10b5af455bc9 (diff)
downloadorg-mode-ff172be293bb3408fceefb27ac75716878182aae.tar.gz
org-element: Use `org-latex-regexps', not `org-format-latex-options'
* lisp/org-element.el (org-element-latex-or-entity-successor, org-element-latex-fragment-parser): Use `org-latex-regexps' instead of `org-format-latex-options'. * testing/lisp/test-org-element.el: Fix tests. `org-latex-regexps' defines the correct syntax for LaTeX code within an Org buffer. On the other hand, `org-format-latex-options' determines which syntax can be previewed within the buffer.
-rw-r--r--lisp/org-element.el40
-rw-r--r--testing/lisp/test-org-element.el45
2 files changed, 35 insertions, 50 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 897d6e1..873c4bb 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -2745,16 +2745,12 @@ 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)))
+ (let ((matchers (cdr org-latex-regexps))
;; ENTITY-RE matches both LaTeX commands and Org entities.
(entity-re
"\\\\\\(there4\\|sup[123]\\|frac[13][24]\\|[a-zA-Z]+\\)\\($\\|{}\\|[^[:alpha:]]\\)"))
(when (re-search-forward
- (concat (mapconcat (lambda (e) (nth 1 (assoc e org-latex-regexps)))
- matchers "\\|")
- "\\|" entity-re)
- nil t)
+ (concat (mapconcat #'cadr matchers "\\|") "\\|" entity-re) nil t)
(goto-char (match-beginning 0))
(if (looking-at entity-re)
;; Determine if it's a real entity or a LaTeX command.
@@ -2764,12 +2760,9 @@ Return value is a cons cell whose CAR is `entity' or
;; Determine its type to get the correct beginning position.
(cons 'latex-fragment
(catch 'return
- (mapc (lambda (e)
- (when (looking-at (nth 1 (assoc e org-latex-regexps)))
- (throw 'return
- (match-beginning
- (nth 2 (assoc e org-latex-regexps))))))
- matchers)
+ (dolist (e matchers)
+ (when (looking-at (nth 1 e))
+ (throw 'return (match-beginning (nth 2 e)))))
(point))))))))
@@ -3024,29 +3017,28 @@ CONTENTS is the contents of the object."
;;;; Latex Fragment
(defun org-element-latex-fragment-parser ()
- "Parse latex fragment at point.
+ "Parse LaTeX fragment at point.
Return a list whose CAR is `latex-fragment' and CDR a plist with
`:value', `:begin', `:end', and `:post-blank' as keywords.
-Assume point is at the beginning of the latex fragment."
+Assume point is at the beginning of the LaTeX fragment."
(save-excursion
(let* ((begin (point))
(substring-match
(catch 'exit
- (mapc (lambda (e)
- (let ((latex-regexp (nth 1 (assoc e org-latex-regexps))))
- (when (or (looking-at latex-regexp)
- (and (not (bobp))
- (save-excursion
- (backward-char)
- (looking-at latex-regexp))))
- (throw 'exit (nth 2 (assoc e org-latex-regexps))))))
- (plist-get org-format-latex-options :matchers))
+ (dolist (e (cdr org-latex-regexps))
+ (let ((latex-regexp (nth 1 e)))
+ (when (or (looking-at latex-regexp)
+ (and (not (bobp))
+ (save-excursion
+ (backward-char)
+ (looking-at latex-regexp))))
+ (throw 'exit (nth 2 e)))))
;; None found: it's a macro.
(looking-at "\\\\[a-zA-Z]+\\*?\\(\\(\\[[^][\n{}]*\\]\\)\\|\\({[^{}\n]*}\\)\\)*")
0))
- (value (match-string-no-properties substring-match))
+ (value (org-match-string-no-properties substring-match))
(post-blank (progn (goto-char (match-end substring-match))
(skip-chars-forward " \t")))
(end (point)))
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index da9011e..ffa01c7 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -1207,32 +1207,25 @@ e^{i\\pi}+1=0
(ert-deftest test-org-element/latex-fragment-parser ()
"Test `latex-fragment' parser."
- (let ((org-latex-regexps
- '(("begin" "^[ ]*\\(\\\\begin{\\([a-zA-Z0-9\\*]+\\)[^
- ("$1" "\\([^$]\\|^\\)\\(\\$[^ \n,;.$]\\$\\)\\([- .,?;:'\")
- ("$" "\\([^$]\\|^\\)\\(\\(\\$\\([^ \n,;.$][^$\n ]*?\\(\n[^$\n ]*?\\)\\{0,2\\}[^ \n,.$]\\)\\$\\)\\)\\([- .,?;:'\")
- ("\\(" "\\\\([^
- ("\\[" "\\\\\\[[^
- ("$$" "\\$\\$[^
- (should
- (org-test-with-temp-text "$a$"
- (org-element-map (org-element-parse-buffer) 'latex-fragment 'identity)))
- (should
- (org-test-with-temp-text "$$a$$"
- (org-element-map (org-element-parse-buffer) 'latex-fragment 'identity)))
- (should
- (org-test-with-temp-text "\\(a\\)"
- (org-element-map (org-element-parse-buffer) 'latex-fragment 'identity)))
- (should
- (org-test-with-temp-text "\\[a\\]"
- (org-element-map
- (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))))))))
+ (should
+ (org-test-with-temp-text "$a$"
+ (org-element-map (org-element-parse-buffer) 'latex-fragment 'identity)))
+ (should
+ (org-test-with-temp-text "$$a$$"
+ (org-element-map (org-element-parse-buffer) 'latex-fragment 'identity)))
+ (should
+ (org-test-with-temp-text "\\(a\\)"
+ (org-element-map (org-element-parse-buffer) 'latex-fragment 'identity)))
+ (should
+ (org-test-with-temp-text "\\[a\\]"
+ (org-element-map
+ (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