0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-29 18:36:26 +00:00

Fix a slowdown in footnote parsing.

* lisp/org-footnote.el (org-footnote-in-valid-context-p): Fix slowdown.

Apply de Morgan’s law and reorder clauses from (apparently) quickest to
slowest.  See <http://mid.gmane.org/loom.20151204T081351-244@post.gmane.org>.
This commit is contained in:
Aaron Ecay 2015-12-05 13:41:33 +00:00
parent 7c08d5c12f
commit 046310d273

View file

@ -200,21 +200,24 @@ extracted will be filled again."
(defun org-footnote-in-valid-context-p ()
"Is point in a context where footnotes are allowed?"
(save-match-data
(not (or (org-at-comment-p)
(org-inside-LaTeX-fragment-p)
;; Avoid literal example.
(org-in-verbatim-emphasis)
(save-excursion
(beginning-of-line)
(looking-at "[ \t]*:[ \t]+"))
;; Avoid cited text and headers in message-mode.
(and (derived-mode-p 'message-mode)
(or (save-excursion
(beginning-of-line)
(looking-at message-cite-prefix-regexp))
(message-point-in-header-p)))
;; Avoid forbidden blocks.
(org-in-block-p org-footnote-forbidden-blocks)))))
(and
(not (org-at-comment-p))
(not (org-in-verbatim-emphasis))
;; Avoid forbidden blocks.
(not (org-in-block-p org-footnote-forbidden-blocks))
;; Avoid literal example.
(not (save-excursion
(beginning-of-line)
(looking-at "[ \t]*:[ \t]+")))
;; The latex fragment check seems expensive, so save it for last.
;; See <http://mid.gmane.org/loom.20151204T081351-244@post.gmane.org>.
(not (org-inside-LaTeX-fragment-p))
;; Avoid cited text and headers in message-mode.
(not (and (derived-mode-p 'message-mode)
(or (save-excursion
(beginning-of-line)
(looking-at message-cite-prefix-regexp))
(message-point-in-header-p)))))))
(defun org-footnote-at-reference-p ()
"Is the cursor at a footnote reference?