From 3dbbf0f9c04003a5a0f0027c581a2ed6aa9fb892 Mon Sep 17 00:00:00 2001 From: memeplex Date: Wed, 2 Jan 2019 19:43:21 -0300 Subject: [PATCH] Add option to natively fontify latex snippets and environments --- lisp/org.el | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 2e63a65..3c9a5dc 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -4138,6 +4138,7 @@ org-level-* faces." "Non-nil means highlight LaTeX related syntax in the buffer. When non nil, the value should be a list containing any of the following symbols: + `native' Highlight LaTeX snippets and environments natively. `latex' Highlight LaTeX snippets and environments. `script' Highlight subscript and superscript. `entities' Highlight entities." @@ -4147,6 +4148,7 @@ following symbols: :type '(choice (const :tag "No highlighting" nil) (set :greedy t :tag "Highlight" + (const :tag "LaTeX snippets and environments (native)" native) (const :tag "LaTeX snippets and environments" latex) (const :tag "Subscript and superscript" script) (const :tag "Entities" entities)))) @@ -6093,7 +6095,8 @@ Result depends on variable `org-highlight-latex-and-related'." (list org-match-substring-with-braces-regexp)) (org-use-sub-superscripts (list org-match-substring-regexp)))) (re-latex - (when (memq 'latex org-highlight-latex-and-related) + (when (or (memq 'latex org-highlight-latex-and-related) + (memq 'native org-highlight-latex-and-related)) (let ((matchers (plist-get org-format-latex-options :matchers))) (delq nil (mapcar (lambda (x) @@ -6117,17 +6120,20 @@ highlighting was done, nil otherwise." (while (re-search-forward org-latex-and-related-regexp nil t) ;; on purpose, we ignore LIMIT (unless (cl-some (lambda (f) (memq f '(org-code org-verbatim underline - org-special-keyword))) + org-special-keyword))) (save-excursion (goto-char (1+ (match-beginning 0))) (face-at-point nil t))) - (let ((offset (if (memq (char-after (1+ (match-beginning 0))) - '(?_ ?^)) - 1 - 0))) - (font-lock-prepend-text-property - (+ offset (match-beginning 0)) (match-end 0) - 'face 'org-latex-and-related) + (let* ((offset (if (memq (char-after (1+ (match-beginning 0))) + '(?_ ?^)) + 1 + 0)) + (start (+ offset (match-beginning 0))) + (end (match-end 0))) + (if (memq 'native org-highlight-latex-and-related) + (org-src-font-lock-fontify-block "latex" start end) + (font-lock-prepend-text-property start end + 'face 'org-latex-and-related)) (add-text-properties (+ offset (match-beginning 0)) (match-end 0) '(font-lock-multiline t))) (throw 'found t))) -- 2.19.2