diff options
author | Nicolas Goaziou <n.goaziou@gmail.com> | 2013-10-24 17:15:23 +0200 |
---|---|---|
committer | Nicolas Goaziou <n.goaziou@gmail.com> | 2013-10-24 17:15:23 +0200 |
commit | ff172be293bb3408fceefb27ac75716878182aae (patch) | |
tree | 16f79c689dd867c03a0ff8081fdfa89f9e8f59e4 | |
parent | 6541e1632f51b4ade0c9318f756f10b5af455bc9 (diff) | |
download | org-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.el | 40 | ||||
-rw-r--r-- | testing/lisp/test-org-element.el | 45 |
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 |