forked from mirrors/org-mode
Fontify latex, entities and sub/superscript again
* lisp/org-faces.el (org-latex-and-related): Renamed from `org-latex-and-export-specials', which wasn't appropriate anymore. * lisp/org.el (org-highlight-latex-and-related, org-latex-and-related-regexp): New variables. (org-compute-latex-and-related-regexp, org-do-latex-and-related): New function, revived from a previous commit. (org-set-regexps-and-options, org-set-font-lock-defaults): Use new functions.
This commit is contained in:
parent
3f95d811c2
commit
5f095f5909
|
@ -765,7 +765,7 @@ level org-n-level-faces"
|
||||||
:version "24.1"
|
:version "24.1"
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
(defface org-latex-and-export-specials
|
(defface org-latex-and-related
|
||||||
(let ((font (cond ((assq :inherit custom-face-attributes)
|
(let ((font (cond ((assq :inherit custom-face-attributes)
|
||||||
'(:inherit underline))
|
'(:inherit underline))
|
||||||
(t '(:underline t)))))
|
(t '(:underline t)))))
|
||||||
|
@ -778,7 +778,7 @@ level org-n-level-faces"
|
||||||
(((class color) (background dark))
|
(((class color) (background dark))
|
||||||
(:foreground "burlywood"))
|
(:foreground "burlywood"))
|
||||||
(t (,@font))))
|
(t (,@font))))
|
||||||
"Face used to highlight math latex and other special exporter stuff."
|
"Face used to highlight LaTeX data, entities and sub/superscript."
|
||||||
:group 'org-faces)
|
:group 'org-faces)
|
||||||
|
|
||||||
(org-copy-face 'mode-line 'org-mode-line-clock
|
(org-copy-face 'mode-line 'org-mode-line-clock
|
||||||
|
|
64
lisp/org.el
64
lisp/org.el
|
@ -3901,6 +3901,21 @@ org-level-* faces."
|
||||||
:group 'org-appearance
|
:group 'org-appearance
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
|
(defcustom org-highlight-latex-and-related nil
|
||||||
|
"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:
|
||||||
|
`latex' Highlight LaTeX snippets and environments.
|
||||||
|
`script' Highlight subscript and superscript.
|
||||||
|
`entities' Highlight entities."
|
||||||
|
:group 'org-appearance
|
||||||
|
:type '(choice
|
||||||
|
(const :tag "No highlighting" nil)
|
||||||
|
(set :greedy t :tag "Highlight"
|
||||||
|
(const :tag "LaTeX snippets and environments" latex)
|
||||||
|
(const :tag "Subscript and superscript" script)
|
||||||
|
(const :tag "Entities" entities))))
|
||||||
|
|
||||||
(defcustom org-hide-emphasis-markers nil
|
(defcustom org-hide-emphasis-markers nil
|
||||||
"Non-nil mean font-lock should hide the emphasis marker characters."
|
"Non-nil mean font-lock should hide the emphasis marker characters."
|
||||||
:group 'org-appearance
|
:group 'org-appearance
|
||||||
|
@ -4990,6 +5005,7 @@ but the stars and the body are.")
|
||||||
(mapcar (lambda (w) (substring w 0 -1))
|
(mapcar (lambda (w) (substring w 0 -1))
|
||||||
(list org-scheduled-string org-deadline-string
|
(list org-scheduled-string org-deadline-string
|
||||||
org-clock-string org-closed-string)))
|
org-clock-string org-closed-string)))
|
||||||
|
(org-compute-latex-and-related-regexp)
|
||||||
(org-set-font-lock-defaults))))
|
(org-set-font-lock-defaults))))
|
||||||
|
|
||||||
(defun org-file-contents (file &optional noerror)
|
(defun org-file-contents (file &optional noerror)
|
||||||
|
@ -5848,9 +5864,56 @@ by a #."
|
||||||
(goto-char e)
|
(goto-char e)
|
||||||
t)))
|
t)))
|
||||||
|
|
||||||
|
(defvar org-latex-and-related-regexp nil
|
||||||
|
"Regular expression for highlighting LaTeX, entities and sub/superscript.")
|
||||||
(defvar org-match-substring-regexp)
|
(defvar org-match-substring-regexp)
|
||||||
(defvar org-match-substring-with-braces-regexp)
|
(defvar org-match-substring-with-braces-regexp)
|
||||||
|
|
||||||
|
(defun org-compute-latex-and-related-regexp ()
|
||||||
|
"Compute regular expression for LaTeX, entities and sub/superscript.
|
||||||
|
Result depends on variable `org-highlight-latex-and-related'."
|
||||||
|
(org-set-local
|
||||||
|
'org-latex-and-related-regexp
|
||||||
|
(let* ((re-sub
|
||||||
|
(cond ((not (memq 'script org-highlight-latex-and-related)) nil)
|
||||||
|
((eq org-use-sub-superscripts '{})
|
||||||
|
(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)
|
||||||
|
(let ((matchers (plist-get org-format-latex-options :matchers)))
|
||||||
|
(delq nil
|
||||||
|
(mapcar (lambda (x)
|
||||||
|
(and (member (car x) matchers) (nth 1 x)))
|
||||||
|
org-latex-regexps)))))
|
||||||
|
(re-entities
|
||||||
|
(when (memq 'entities org-highlight-latex-and-related)
|
||||||
|
(list "\\\\\\(there4\\|sup[123]\\|frac[13][24]\\|[a-zA-Z]+\\)\\($\\|{}\\|[^[:alpha:]]\\)"))))
|
||||||
|
(mapconcat 'identity (append re-latex re-entities re-sub) "\\|"))))
|
||||||
|
|
||||||
|
(defun org-do-latex-and-related (limit)
|
||||||
|
"Highlight LaTeX snippets and environments, entities and sub/superscript.
|
||||||
|
LIMIT bounds the search for syntax to highlight. Stop at first
|
||||||
|
highlighted object, if any. Return t if some highlighting was
|
||||||
|
done, nil otherwise."
|
||||||
|
(when org-highlight-latex-and-related
|
||||||
|
(catch 'found
|
||||||
|
(while (re-search-forward org-latex-and-related-regexp limit t)
|
||||||
|
(unless (memq (car-safe (get-text-property (1+ (match-beginning 0))
|
||||||
|
'face))
|
||||||
|
'(org-code org-verbatim underline))
|
||||||
|
(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)
|
||||||
|
(add-text-properties (+ offset (match-beginning 0)) (match-end 0)
|
||||||
|
'(font-lock-multiline t)))
|
||||||
|
(throw 'found t)))
|
||||||
|
nil)))
|
||||||
|
|
||||||
(defun org-restart-font-lock ()
|
(defun org-restart-font-lock ()
|
||||||
"Restart `font-lock-mode', to force refontification."
|
"Restart `font-lock-mode', to force refontification."
|
||||||
(when (and (boundp 'font-lock-mode) font-lock-mode)
|
(when (and (boundp 'font-lock-mode) font-lock-mode)
|
||||||
|
@ -6011,6 +6074,7 @@ needs to be inserted at a specific position in the font-lock sequence.")
|
||||||
"\\(.*:" org-archive-tag ":.*\\)")
|
"\\(.*:" org-archive-tag ":.*\\)")
|
||||||
'(1 'org-archived prepend))
|
'(1 'org-archived prepend))
|
||||||
;; Specials
|
;; Specials
|
||||||
|
'(org-do-latex-and-related)
|
||||||
'(org-fontify-entities)
|
'(org-fontify-entities)
|
||||||
'(org-raise-scripts)
|
'(org-raise-scripts)
|
||||||
;; Code
|
;; Code
|
||||||
|
|
Loading…
Reference in New Issue