forked from mirrors/org-mode
org-latex-preview: Cache formatted color strings
* lisp/org-latex-preview.el (org-latex-preview--format-color, org-latex-preview--format-color-cache): Introduce a color cache alist, and use it.
This commit is contained in:
parent
7a4925cac6
commit
a27cc761ff
|
@ -1606,11 +1606,20 @@ a HTML file."
|
||||||
"Return a RGB color for the LaTeX color package."
|
"Return a RGB color for the LaTeX color package."
|
||||||
(org-latex-preview--format-color (face-attribute 'default attr nil)))
|
(org-latex-preview--format-color (face-attribute 'default attr nil)))
|
||||||
|
|
||||||
|
(defvar org-latex-preview--format-color-cache nil
|
||||||
|
"Cache for `org-latex-preview--format-color'.
|
||||||
|
Because `org-latex-preview--format-color' is called multiple
|
||||||
|
times for every fragment, even though only few colors will be
|
||||||
|
used it can be worth storing the results to avoid re-computing.")
|
||||||
|
|
||||||
(defun org-latex-preview--format-color (color-name)
|
(defun org-latex-preview--format-color (color-name)
|
||||||
"Convert COLOR-NAME to a RGB color value."
|
"Convert COLOR-NAME to a RGB color value."
|
||||||
(apply #'format "%s,%s,%s"
|
(or (alist-get color-name org-latex-preview--format-color-cache nil nil #'equal)
|
||||||
(mapcar 'org-latex-preview--normalize-color
|
(cdar (push (cons color-name
|
||||||
(color-values color-name))))
|
(apply #'format "%s,%s,%s"
|
||||||
|
(mapcar 'org-latex-preview--normalize-color
|
||||||
|
(color-values color-name))))
|
||||||
|
org-latex-preview--format-color-cache))))
|
||||||
|
|
||||||
(defun org-latex-preview--normalize-color (value)
|
(defun org-latex-preview--normalize-color (value)
|
||||||
"Return string to be used as color value for an RGB component."
|
"Return string to be used as color value for an RGB component."
|
||||||
|
|
Loading…
Reference in New Issue