modern_lisp-machine/emacs.d/themes/tron-legacy-theme.el

588 lines
38 KiB
EmacsLisp
Raw Normal View History

2024-06-01 05:00:40 +00:00
;;; tron-legacy-theme.el --- An original retro-futuristic theme inspired by Tron: Legacy -*- lexical-binding: t; -*-
;; Copyright (C) 2018-2020 Ian Y.E. Pan
;; Author: Ian Y.E. Pan
;; URL: https://github.com/ianpan870102/tron-legacy-emacs-theme
;; Version: 2.0.0
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
;; This file is not part of Emacs.
;;; Commentary:
;; An original theme for Emacs 2hj
;; with further inspirations drawn from Base16-Black-Metal, Grayscale and City Lights.
;;; Code:
(defgroup tron-legacy-theme nil
"Options for tron-legacy theme."
:group 'faces)
(defcustom tron-legacy-theme-dark-fg-bright-comments nil
"If non-nil, default foreground will be dimmed and comments will be boosted to be brighter than the normal foreground."
:group 'tron-legacy-theme
:type 'boolean)
(defcustom tron-legacy-theme-vivid-cursor nil
"If non-nil, the cursor will be bright golden, making it easier to spot."
:group 'tron-legacy-theme
:type 'boolean)
(defcustom tron-legacy-theme-softer-bg nil
"If non-nil, the contrast of the background will be slightly lower, instead of being pure black."
:group 'tron-legacy-theme
:type 'boolean)
(deftheme tron-legacy)
(let ((class '((class color) (min-colors 89)))
(fg0 "#90ACBC")
(fg1 (if tron-legacy-theme-dark-fg-bright-comments "#5A7387" "#B0CCDC")) ; default fg
(fg2 "#BBCCDD")
(fg3 "#BBF0EF")
(fg4 "#CBECFF")
(bg0 "#000000")
(bg1 (if tron-legacy-theme-softer-bg "#17181b" "#000000")) ; default bg
(bg2 (if tron-legacy-theme-softer-bg "#192533" "#0E1926"))
(bg3 "#1B324B")
(bg4 "#2B4255")
(hl-line "#0E2638") ; hl-line
(bg-hl "#2B4255") ; region, selection
(vc-r "#B62D66")
(vc-g "#4BB5BE")
(vc-b "#387AAA")
(key2 "#9BBDD6")
(key3 "#AAAAAA")
(accent "#FFFFFF")
(numeric "#4BB5BE")
(mode-line-bg "#3D5666")
(mode-line-bg-dark "#1E1E1E")
(line-num "#5A7387")
(cursor (if tron-legacy-theme-vivid-cursor "#DEB45B" "#B0CCDC"))
(builtin "#8Fd4FF")
(keyword "#8Fd4FF")
(const "#BBF0EF")
(comment (if tron-legacy-theme-dark-fg-bright-comments "#B0CCDC" "#5A7387"))
(doc "#6A8397")
(type "#4BB5BE")
(str "#387AAA")
(func "#DEB45B")
(var (if tron-legacy-theme-dark-fg-bright-comments "#5A7387" "#B0CCDC")) ; var = fg
(warning "#FF7DBB")
;; standardized palette
(tron-yellow "#DEB45B")
(tron-bluegreen "#4BB5BE")
(tron-magenta "#B62D66")
(tron-orange "#DEB45B")
(tron-red "#B62D66")
(tron-blue "#8Fd4FF")
(tron-green "#4BB5BE")
(tron-lightred "#FF7DBB")
(tron-lightblue "#A0DCFF")
(tron-lightgreen "#BBF0EF")
(tron-red-bg "#361016")
(tron-blue-bg "#040E3F")
(tron-green-bg "#03353E")
(tron-red-bghl "#462026")
(tron-blue-bghl "#141E4F")
(tron-green-bghl "#13454E"))
(custom-theme-set-faces
'tron-legacy
`(default ((,class (:background ,bg1 :foreground ,fg1))))
;;;;; Font lock basics
`(font-lock-builtin-face ((,class (:foreground ,builtin))))
`(font-lock-comment-face ((,class (:foreground ,comment :italic t))))
`(font-lock-negation-char-face ((,class (:foreground ,const))))
`(font-lock-reference-face ((,class (:foreground ,const))))
`(font-lock-constant-face ((,class (:foreground ,const))))
`(font-lock-doc-face ((,class (:foreground ,doc))))
`(font-lock-function-name-face ((,class (:foreground ,func :bold nil))))
`(font-lock-keyword-face ((,class (:bold nil :foreground ,keyword))))
`(font-lock-string-face ((,class (:foreground ,str))))
`(font-lock-type-face ((,class (:foreground ,type ))))
`(font-lock-variable-name-face ((,class (:foreground ,var))))
`(font-lock-warning-face ((,class (:foreground ,warning :background ,bg2))))
;;;;; More built-in UI
`(region ((,class (:background ,bg-hl :distant-foreground ,fg0 :extend nil))))
`(highlight ((,class (:foreground ,fg3 :background unspecified :underline t)))) ; link hover
`(hl-line ((,class (:background ,hl-line))))
`(fringe ((,class (:background ,bg1 :foreground ,fg4))))
`(cursor ((,class (:background ,cursor))))
`(show-paren-match-face ((,class (:background ,warning))))
`(show-paren-match ((t (:foreground ,accent :background ,bg4 :bold t))))
`(show-paren-mismatch ((t (:background ,warning))))
`(isearch ((,class (:bold nil :foreground ,accent :background ,bg4))))
`(vertical-border ((,class (:foreground ,fg4))))
`(minibuffer-prompt ((,class (:foreground ,tron-bluegreen :weight normal))))
`(default-italic ((,class (:italic t))))
`(link ((,class (:foreground ,const :underline t))))
`(error ((,class (:foreground ,tron-lightred))))
`(warning ((,class (:foreground ,tron-yellow))))
`(success ((,class (:foreground ,tron-bluegreen))))
`(dired-directory ((t (:inherit font-lock-keyword-face))))
`(line-number ((,class (:foreground ,line-num :background unspecified))))
`(line-number-current-line ((,class (:foreground ,fg1 :background unspecified))))
`(trailing-whitespace ((,class :foreground unspecified :background ,warning)))
`(lazy-highlight ((,class (:foreground ,fg2 :background ,bg3))))
;;;;; which-func
`(which-func ((t (:foreground ,tron-orange))))
;;;;; mode-line tweaks
`(mode-line ((,class (:bold nil :foreground ,fg4 :background ,mode-line-bg))))
`(mode-line-inactive ((,class (:bold nil :foreground ,fg0 :background ,mode-line-bg-dark))))
`(mode-line-buffer-id ((,class (:bold nil :foreground ,fg4 :background unspecified))))
`(mode-line-highlight ((,class (:foreground ,keyword :box nil :weight normal))))
`(mode-line-emphasis ((,class (:foreground ,fg1))))
;;;;; Company
`(company-preview-common ((t (:foreground unspecified :background ,bg2))))
`(company-scrollbar-bg ((t (:background ,bg2))))
`(company-scrollbar-fg ((t (:background ,bg3))))
`(company-tooltip ((t (:inherit default :background ,bg2))))
`(company-tooltip-common ((t (:foreground ,tron-blue :bold t))))
`(company-tooltip-selection ((t (:background ,bg-hl))))
`(company-tooltip-annotation ((t (:foreground ,doc)))) ; parameter hints etc.
`(company-template-field ((t (:foreground ,fg1 :background ,bg-hl))))
;;;;; Org mode
`(org-document-title ((,class (:foreground ,type :height 1.2 :bold t))))
`(org-level-1 ((,class (:bold nil :foreground ,tron-bluegreen :height 1.1))))
`(org-level-2 ((,class (:bold nil :foreground ,tron-yellow))))
`(org-level-3 ((,class (:bold nil :foreground ,tron-blue))))
`(org-level-4 ((,class (:bold nil :foreground ,tron-bluegreen))))
`(org-code ((,class (:foreground ,fg2))))
`(org-hide ((,class (:foreground ,fg4))))
`(org-date ((,class (:underline t :foreground ,var) )))
`(org-footnote ((,class (:underline t :foreground ,fg4))))
`(org-link ((,class (:underline t :foreground ,type ))))
`(org-special-keyword ((,class (:foreground ,tron-green))))
`(org-block ((,class (:foreground ,fg2 :background ,bg2 :extend t))))
`(org-quote ((,class (:inherit org-block :slant italic))))
`(org-verse ((,class (:inherit org-block :slant italic))))
`(org-todo ((,class (:box (:line-width 1 :color ,tron-lightred)
:foreground ,tron-lightred))))
`(org-done ((,class (:box (:line-width 1 :color ,tron-lightgreen)
:foreground ,tron-lightgreen))))
`(org-warning ((,class (:underline t :foreground ,warning))))
`(org-agenda-structure ((,class (:weight normal :foreground ,fg3 :box (:color ,fg4) :background ,bg3))))
`(org-agenda-date ((,class (:foreground ,var :height 1.1 ))))
`(org-agenda-date-weekend ((,class (:weight normal :foreground ,fg4))))
`(org-agenda-date-today ((,class (:weight normal :foreground ,keyword :height 1.2))))
`(org-agenda-done ((,class (:foreground ,bg4))))
`(org-scheduled ((,class (:foreground ,type))))
`(org-scheduled-today ((,class (:foreground ,func :weight normal :height 1.2))))
`(org-ellipsis ((,class (:foreground ,builtin))))
`(org-verbatim ((,class (:foreground ,fg4))))
`(org-document-info-keyword ((,class (:foreground ,tron-green))))
`(org-sexp-date ((,class (:foreground ,fg4))))
;;;;; LaTeX
`(font-latex-bold-face ((,class (:foreground ,type))))
`(font-latex-italic-face ((,class (:foreground ,key3 :italic t))))
`(font-latex-string-face ((,class (:foreground ,str))))
`(font-latex-match-reference-keywords ((,class (:foreground ,const))))
`(font-latex-match-variable-keywords ((,class (:foreground ,var))))
;;;;; Ido mode
`(ido-only-match ((,class (:foreground ,keyword))))
`(ido-subdir ((,class (:weight normal :foreground ,fg0))))
`(ido-first-match ((,class (:foreground ,keyword :bold nil))))
;;;;; Gnus
`(gnus-header-content ((,class (:foreground ,keyword))))
`(gnus-header-from ((,class (:foreground ,var))))
`(gnus-header-name ((,class (:foreground ,type))))
`(gnus-header-subject ((,class (:foreground ,func :bold nil))))
;;;;; Mu4e
`(mu4e-view-url-number-face ((,class (:foreground ,type))))
`(mu4e-cited-1-face ((,class (:foreground ,fg2))))
`(mu4e-cited-7-face ((,class (:foreground ,fg3))))
`(mu4e-header-marks-face ((,class (:foreground ,type))))
;;;;; FFAP
`(ffap ((,class (:foreground ,fg4))))
;;;;; js2 & js3
`(js2-private-function-call ((,class (:foreground ,const))))
`(js2-jsdoc-html-tag-delimiter ((,class (:foreground ,str))))
`(js2-jsdoc-html-tag-name ((,class (:foreground ,key2))))
`(js2-external-variable ((,class (:foreground ,type ))))
`(js2-function-param ((,class (:foreground ,const))))
`(js2-jsdoc-value ((,class (:foreground ,str))))
`(js2-private-member ((,class (:foreground ,fg3))))
`(js2-warning ((t (:underline ,warning))))
`(js2-error ((t (:foreground ,warning :weight normal))))
`(js2-jsdoc-tag ((t (:foreground ,var))))
`(js2-jsdoc-type ((t (:foreground ,var))))
`(js2-instance-member ((t (:foreground ,var))))
`(js2-object-property ((t (:foreground ,func))))
`(js2-magic-paren ((t (:foreground ,const))))
`(js2-function-call ((t (:foreground ,const))))
`(js2-keywords ((t (:foreground ,keyword))))
`(js3-warning-face ((,class (:underline ,keyword))))
`(js3-error-face ((,class (:underline ,warning))))
`(js3-external-variable-face ((,class (:foreground ,var))))
`(js3-function-param-face ((,class (:foreground ,key3))))
`(js3-jsdoc-tag-face ((,class (:foreground ,keyword))))
`(js3-instance-member-face ((,class (:foreground ,const))))
;;;;; Auto-complete
`(ac-completion-face ((,class (:underline t :foreground ,keyword))))
;;;;; Misc
`(info-quoted-name ((,class (:foreground ,builtin))))
`(info-string ((,class (:foreground ,str))))
`(icompletep-determined ((,class :foreground ,builtin)))
;;;;; Slime
`(slime-repl-inputed-output-face ((,class (:foreground ,type))))
;;;;; Undo tree
`(undo-tree-visualizer-current-face ((,class :foreground ,builtin)))
`(undo-tree-visualizer-default-face ((,class :foreground ,fg2)))
`(undo-tree-visualizer-unmodified-face ((,class :foreground ,var)))
`(undo-tree-visualizer-register-face ((,class :foreground ,type)))
;;;;; Rainbow delimiters
`(rainbow-delimiters-depth-1-face ((,class :foreground "#BBECEF")))
`(rainbow-delimiters-depth-2-face ((,class :foreground "#BBCCDD")))
`(rainbow-delimiters-depth-3-face ((,class :foreground "#8Fd4FF")))
`(rainbow-delimiters-depth-4-face ((,class :foreground "#BBECEF")))
`(rainbow-delimiters-depth-5-face ((,class :foreground "#BBCCDD")))
`(rainbow-delimiters-depth-6-face ((,class :foreground "#8Fd4FF")))
`(rainbow-delimiters-depth-7-face ((,class :foreground "#BBECEF")))
`(rainbow-delimiters-depth-8-face ((,class :foreground "#BBCCDD")))
`(rainbow-delimiters-depth-9-face ((,class :foreground "#8Fd4FF")))
`(rainbow-delimiters-unmatched-face ((,class :foreground ,warning)))
;;;;; Magit
`(magit-item-highlight ((,class (:background ,bg3))))
`(magit-hunk-heading ((,class (:background ,bg3))))
`(magit-hunk-heading-highlight ((,class (:background ,bg3))))
`(magit-bisect-bad ((t (:foreground ,tron-red))))
`(magit-bisect-good ((t (:foreground ,tron-green))))
`(magit-bisect-skip ((t (:foreground ,tron-orange))))
`(magit-blame-date ((t (:foreground ,tron-red))))
`(magit-blame-heading ((t (:foreground ,tron-orange :background ,bg3 :extend t))))
`(magit-branch ((,class (:foreground ,tron-blue :weight normal))))
`(magit-branch-current ((t (:foreground ,tron-blue))))
`(magit-branch-local ((t (:foreground ,tron-bluegreen))))
`(magit-branch-remote ((t (:foreground ,tron-green))))
`(magit-cherry-equivalent ((t (:foreground ,tron-magenta))))
`(magit-cherry-unmatched ((t (:foreground ,tron-bluegreen))))
`(magit-diff-added ((t (:foreground ,tron-green :background ,tron-green-bg :extend t))))
`(magit-diff-added-highlight ((t (:foreground ,tron-lightgreen :background ,tron-green-bghl :extend t))))
`(magit-diff-removed ((t (:foreground ,tron-red :background ,tron-red-bg :extend t))))
`(magit-diff-removed-highlight ((t (:foreground ,tron-lightred :background ,tron-red-bghl :extend t))))
`(magit-diff-base ((t (:foreground ,bg1 :background ,tron-red :extend t))))
`(magit-diff-base-highlight ((t (:foreground ,tron-red :background ,bg3 :extend t))))
`(magit-diff-context ((t (:foreground ,comment :extend t))))
`(magit-diff-file-header ((,class (:foreground ,fg2 :background ,bg3))))
`(magit-diff-file-heading ((t (:foreground ,fg1 :extend t))))
`(magit-diff-file-heading-highlight ((t (:background ,bg3 :extend t))))
`(magit-diff-file-heading-selection ((t (:foreground ,tron-red :background ,bg3 :extend t))))
`(magit-diff-hunk-heading ((t (:foreground ,fg1 :background ,bg3 :extend t))))
`(magit-diff-hunk-heading-highlight ((t (:background ,bg3 :extend t))))
`(magit-diff-lines-heading ((t (:foreground ,tron-yellow :background ,tron-red :extend t))))
`(magit-diff-context-highlight ((,class (:background ,bg2 :foreground ,fg2))))
`(magit-diffstat-added ((t (:foreground ,tron-green))))
`(magit-diffstat-removed ((t (:foreground ,tron-orange))))
`(magit-dimmed ((t (:foreground ,comment))))
`(magit-filename ((t (:foreground ,tron-magenta))))
`(magit-hash ((t (:foreground ,comment))))
`(magit-header-line ((t (:inherit nil))))
`(magit-log-author ((t (:foreground ,tron-orange))))
`(magit-log-date ((t (:foreground ,tron-blue))))
`(magit-log-graph ((t (:foreground ,comment))))
`(magit-mode-line-process ((t (:foreground ,tron-orange))))
`(magit-mode-line-process-error ((t (:foreground ,tron-red))))
`(magit-process-ok ((t (:inherit success))))
`(magit-process-ng ((t (:inherit error))))
`(magit-reflog-amend ((t (:foreground ,tron-magenta))))
`(magit-reflog-checkout ((t (:foreground ,tron-blue))))
`(magit-reflog-cherry-pick ((t (:foreground ,tron-green))))
`(magit-reflog-commit ((t (:foreground ,tron-green))))
`(magit-reflog-merge ((t (:foreground ,tron-green))))
`(magit-reflog-other ((t (:foreground ,tron-bluegreen))))
`(magit-reflog-rebase ((t (:foreground ,tron-magenta))))
`(magit-reflog-remote ((t (:foreground ,tron-bluegreen))))
`(magit-reflog-reset ((t (:inherit error))))
`(magit-refname ((t (:foreground ,comment))))
`(magit-section-heading ((t (:foreground ,tron-yellow))))
`(magit-section-heading-selection ((t (:foreground ,tron-orange :extend t))))
`(magit-section-highlight ((t (:background ,bg3 :extend t))))
`(magit-sequence-drop ((t (:foreground ,tron-red))))
`(magit-sequence-head ((t (:foreground ,tron-blue))))
`(magit-sequence-part ((t (:foreground ,tron-orange))))
`(magit-sequence-stop ((t (:foreground ,tron-green))))
`(magit-signature-bad ((t (:inherit error))))
`(magit-signature-error ((t (:inherit error))))
`(magit-signature-expired-key ((t (:foreground ,tron-orange))))
`(magit-signature-good ((t (:inherit success))))
`(magit-signature-revoked ((t (:foreground ,tron-magenta))))
`(magit-signature-untrusted ((t (:foreground ,tron-bluegreen))))
`(magit-tag ((t (:foreground ,tron-yellow))))
;;;; term-mode (vterm too)
`(term ((,class (:foreground ,fg1 :background ,bg1))))
`(term-color-black ((,class (:foreground ,bg3 :background ,bg3))))
`(term-color-blue ((,class (:foreground ,tron-blue :background ,tron-blue))))
`(term-color-red ((,class (:foreground ,tron-red :background ,tron-red))))
`(term-color-green ((,class (:foreground ,tron-green :background ,tron-green))))
`(term-color-yellow ((,class (:foreground ,tron-yellow :background ,tron-yellow))))
`(term-color-magenta ((,class (:foreground ,tron-magenta :background ,tron-magenta))))
`(term-color-cyan ((,class (:foreground ,tron-bluegreen :background ,tron-bluegreen))))
`(term-color-white ((,class (:foreground ,fg2 :background ,fg2))))
;;;;; diredfl
`(diredfl-autofile-name ((t (:foreground ,fg0))))
`(diredfl-compressed-file-name ((t (:foreground ,tron-yellow))))
`(diredfl-compressed-file-suffix ((t (:foreground ,doc))))
`(diredfl-date-time ((t (:foreground ,tron-bluegreen))))
`(diredfl-deletion ((t (:foreground ,tron-red :bold t))))
`(diredfl-deletion-file-name ((t (:foreground ,tron-red ))))
`(diredfl-dir-heading ((t (:foreground ,tron-blue :bold t))))
`(diredfl-dir-name ((t (:foreground ,tron-blue))))
`(diredfl-dir-priv ((t (:foreground ,tron-blue))))
`(diredfl-exec-priv ((t (:foreground ,tron-green))))
`(diredfl-executable-tag ((t (:foreground ,tron-green))))
`(diredfl-file-name ((t (:foreground ,fg1))))
`(diredfl-file-suffix ((t (:foreground ,doc))))
`(diredfl-flag-mark ((t (:foreground ,tron-yellow :bold t))))
`(diredfl-ignored-file-name ((t (:foreground ,doc))))
`(diredfl-link-priv ((t (:foreground ,tron-magenta))))
`(diredfl-no-priv ((t (:foreground ,fg1))))
`(diredfl-number ((t (:foreground ,tron-orange))))
`(diredfl-other-priv ((t (:foreground ,tron-magenta))))
`(diredfl-rare-priv ((t (:foreground ,fg1))))
`(diredfl-read-priv ((t (:foreground ,tron-yellow))))
`(diredfl-symlink ((t (:foreground ,tron-magenta))))
`(diredfl-tagged-autofile-name ((t (:foreground ,fg0))))
`(diredfl-write-priv ((t (:foreground ,tron-red))))
;;;;; Helm
`(helm-header ((,class (:foreground ,fg2 :background ,bg1 :underline nil :box nil))))
`(helm-source-header ((,class (:foreground ,keyword :background ,bg1 :underline nil :weight normal))))
`(helm-selection ((,class (:background ,bg2 :underline nil))))
`(helm-selection-line ((,class (:background ,bg2))))
`(helm-visible-mark ((,class (:foreground ,bg1 :background ,bg3))))
`(helm-candidate-number ((,class (:foreground ,bg1 :background ,fg1))))
`(helm-separator ((,class (:foreground ,type :background ,bg1))))
`(helm-time-zone-current ((,class (:foreground ,builtin :background ,bg1))))
`(helm-time-zone-home ((,class (:foreground ,type :background ,bg1))))
`(helm-buffer-not-saved ((,class (:foreground ,type :background ,bg1))))
`(helm-buffer-process ((,class (:foreground ,builtin :background ,bg1))))
`(helm-buffer-saved-out ((,class (:foreground ,fg1 :background ,bg1))))
`(helm-buffer-size ((,class (:foreground ,fg1 :background ,bg1))))
`(helm-ff-directory ((,class (:foreground ,func :background ,bg1 :weight normal))))
`(helm-ff-file ((,class (:foreground ,fg1 :background ,bg1 :weight normal))))
`(helm-ff-executable ((,class (:foreground ,key2 :background ,bg1 :weight normal))))
`(helm-ff-invalid-symlink ((,class (:foreground ,key3 :background ,bg1 :weight normal))))
`(helm-ff-symlink ((,class (:foreground ,keyword :background ,bg1 :weight normal))))
`(helm-ff-prefix ((,class (:foreground ,bg1 :background ,keyword :weight normal))))
`(helm-grep-cmd-line ((,class (:foreground ,fg1 :background ,bg1))))
`(helm-grep-file ((,class (:foreground ,fg1 :background ,bg1))))
`(helm-grep-finish ((,class (:foreground ,fg2 :background ,bg1))))
`(helm-grep-lineno ((,class (:foreground ,fg1 :background ,bg1))))
`(helm-grep-match ((,class (:foreground nil :background nil :inherit helm-match))))
`(helm-grep-running ((,class (:foreground ,func :background ,bg1))))
`(helm-moccur-buffer ((,class (:foreground ,func :background ,bg1))))
`(helm-source-go-package-godoc-description ((,class (:foreground ,str))))
`(helm-bookmark-w3m ((,class (:foreground ,type))))
;;;;; web-mode
`(web-mode-html-tag-bracket-face ((,class (:foreground ,doc))))
`(web-mode-html-tag-face ((,class (:foreground ,type))))
`(web-mode-html-attr-name-face ((,class (:foreground ,var))))
`(web-mode-html-attr-value-face ((,class (:foreground ,str))))
`(web-mode-builtin-face ((,class (:inherit ,font-lock-builtin-face))))
`(web-mode-comment-face ((,class (:inherit ,font-lock-comment-face))))
`(web-mode-constant-face ((,class (:inherit ,font-lock-constant-face))))
`(web-mode-keyword-face ((,class (:foreground ,keyword))))
`(web-mode-doctype-face ((,class (:inherit ,font-lock-doc-face))))
`(web-mode-function-name-face ((,class (:inherit ,font-lock-function-name-face))))
`(web-mode-string-face ((,class (:foreground ,str))))
`(web-mode-type-face ((,class (:inherit ,font-lock-type-face))))
`(web-mode-warning-face ((,class (:inherit ,font-lock-warning-face))))
`(web-mode-json-key-face ((,class (:foreground ,tron-green))))
`(web-mode-json-context-face ((,class (:foreground ,tron-blue))))
;;;;; Diff
`(diff-header ((t (:foreground ,tron-bluegreen :background unspecified))))
`(diff-file-header ((t (:foreground ,fg3 :background unspecified))))
`(diff-hunk-header ((t (:foreground ,fg4 :background ,bg4))))
`(diff-added ((t (:foreground ,tron-green :background ,tron-green-bg))))
`(diff-removed ((t (:foreground ,tron-red :background ,tron-red-bg))))
`(diff-changed ((t (:foreground ,tron-blue :background ,tron-blue-bg))))
`(diff-refine-added ((t (:foreground ,tron-lightgreen :background ,tron-green-bghl))))
`(diff-refine-removed ((t (:foreground ,tron-lightred :background ,tron-red-bghl))))
`(diff-refine-changed ((t (:foreground ,tron-lightblue :background ,tron-blue-bghl))))
;;;;; Ediff
`(ediff-current-diff-Ancestor ((t (:foreground ,tron-red :background ,tron-red-bg))))
`(ediff-current-diff-A ((t (:foreground ,tron-red :background ,tron-red-bg))))
`(ediff-current-diff-B ((t (:foreground ,tron-green :background ,tron-green-bg))))
`(ediff-current-diff-C ((t (:foreground ,tron-blue :background ,tron-blue-bg))))
`(ediff-fine-diff-Ancestor ((t (:foreground ,tron-lightred :background ,tron-red-bghl))))
`(ediff-fine-diff-A ((t (:foreground ,tron-lightred :background ,tron-red-bghl))))
`(ediff-fine-diff-B ((t (:foreground ,tron-lightgreen :background ,tron-green-bghl))))
`(ediff-fine-diff-C ((t (:foreground ,tron-lightblue :background ,tron-blue-bghl))))
`(ediff-even-diff-Ancestor ((t (:background ,bg2))))
`(ediff-even-diff-A ((t (:background ,bg2))))
`(ediff-even-diff-B ((t (:background ,bg2))))
`(ediff-even-diff-C ((t (:background ,bg2))))
`(ediff-odd-diff-Ancestor ((t (:background ,bg2))))
`(ediff-odd-diff-A ((t (:background ,bg2))))
`(ediff-odd-diff-B ((t (:background ,bg2))))
`(ediff-odd-diff-C ((t (:background ,bg2))))
;;;;; Java/JDE
`(jde-java-font-lock-package-face ((t (:foreground ,var))))
`(jde-java-font-lock-public-face ((t (:foreground ,keyword))))
`(jde-java-font-lock-private-face ((t (:foreground ,keyword))))
`(jde-java-font-lock-constant-face ((t (:foreground ,const))))
`(jde-java-font-lock-modifier-face ((t (:foreground ,key3))))
`(jde-jave-font-lock-protected-face ((t (:foreground ,keyword))))
`(jde-java-font-lock-number-face ((t (:foreground ,numeric))))
;;;;; centaur-tabs
`(centaur-tabs-default ((t (:background ,bg1 :foreground ,fg1))))
`(centaur-tabs-selected ((t (:background ,bg1 :foreground ,fg3 :box nil))))
`(centaur-tabs-unselected ((t (:background ,bg2 :foreground ,fg0 :box nil))))
`(centaur-tabs-selected-modified ((t (:background ,bg2 :foreground ,accent :box nil))))
`(centaur-tabs-unselected-modified ((t (:background ,bg2 :foreground ,fg4 :box nil))))
`(centaur-tabs-active-bar-face ((t (:background ,accent :box nil))))
`(centaur-tabs-modified-marker-selected ((t (:inherit 'centaur-tabs-selected-modified :foreground ,accent :box nil))))
`(centaur-tabs-modified-marker-unselected ((t (:inherit 'centaur-tabs-unselected-modified :foreground ,accent :box nil))))
;;;;; solaire-mode
`(solaire-default-face ((t (:inherit default :background ,bg2))))
`(solaire-minibuffer-face ((t (:inherit default :background ,bg2))))
`(solaire-hl-line-face ((t (:inherit hl-line :background ,bg3))))
`(solaire-org-hide-face ((t (:inherit org-hide :background ,bg2))))
;;;;; Ivy
`(ivy-confirm-face ((t (:inherit minibuffer-prompt :foreground ,keyword))))
`(ivy-current-match ((t (:background ,bg-hl :extend t))))
`(ivy-highlight-face ((t (:inherit font-lock-builtin-face))))
`(ivy-match-required-face ((t (:inherit minibuffer-prompt :foreground ,warning))))
`(ivy-minibuffer-match-face-1 ((t (:foreground ,tron-lightblue))))
`(ivy-minibuffer-match-face-2 ((t (:inherit ivy-minibuffer-match-face-1))))
`(ivy-minibuffer-match-face-3 ((t (:inherit ivy-minibuffer-match-face-2))))
`(ivy-minibuffer-match-face-4 ((t (:inherit ivy-minibuffer-match-face-2))))
`(ivy-minibuffer-match-highlight ((t (:inherit ivy-current-match))))
`(ivy-modified-buffer ((t (:inherit default :foreground ,var))))
`(ivy-virtual ((t (:inherit default :foreground ,doc))))
`(ivy-posframe ((t (:background ,bg3))))
;;;;; Counsel
`(counsel-key-binding ((t (:foreground ,var))))
;;;;; Swiper
`(swiper-match-face-1 ((t (:inherit ivy-minibuffer-match-face-1))))
`(swiper-match-face-2 ((t (:inherit ivy-minibuffer-match-face-2))))
`(swiper-match-face-3 ((t (:inherit ivy-minibuffer-match-face-3))))
`(swiper-match-face-4 ((t (:inherit ivy-minibuffer-match-face-4))))
`(swiper-line-face ((t (:foreground ,fg3 :background ,bg-hl :extend t))))
;;;;; Git gutter & git gutter fringe
`(git-gutter:added ((t (:foreground ,vc-g :weight normal))))
`(git-gutter:deleted ((t (:foreground ,vc-r :weight normal))))
`(git-gutter:modified ((t (:foreground ,vc-b :weight normal))))
`(git-gutter-fr:added ((t (:foreground ,vc-g :weight normal))))
`(git-gutter-fr:deleted ((t (:foreground ,vc-r :weight normal))))
`(git-gutter-fr:modified ((t (:foreground ,vc-b :weight normal))))
;;;;; diff-hl (git gutter)
`(diff-hl-insert ((t (:background ,vc-g :foreground ,vc-g))))
`(diff-hl-delete ((t (:background ,vc-r :foreground ,vc-r))))
`(diff-hl-change ((t (:background ,vc-b :foreground ,vc-b))))
;;;;; Neo tree
`(neo-dir-link-face ((t (:foreground "#cccccc"))))
`(neo-header-face ((t (:foreground "#cccccc"))))
`(neo-banner-face ((t (:foreground "#cccccc"))))
`(neo-root-dir-face ((t (:foreground "#cccccc"))))
`(neo-file-link-face ((t (:foreground "#aaaaaa"))))
`(neo-expand-btn-face ((t (:foreground "#aaaaaa"))))
;;;;; smart mode line
`(sml/line-number ((t (:foreground ,fg4 :bold nil))))
`(sml/modified ((t (:foreground ,tron-lightred :background ,tron-red-bghl :bold t))))
`(sml/outside-modified ((t (:foreground ,tron-lightred :background ,tron-red-bghl :bold nil))))
`(sml/global ((t (:foreground ,fg1 :bold nil))))
`(sml/filename ((t (:foreground ,fg4 :bold t))))
`(sml/prefix ((t (:foreground ,fg1 :bold nil))))
`(sml/read-only ((t (:foreground ,fg1 :bold nil))))
`(sml/modes ((t (:foreground ,fg1 :bold nil))))
`(sml/charging ((t (:foreground ,tron-green :bold nil))))
`(sml/discharging ((t (:foreground ,tron-lightred :background ,tron-red-bghl :bold nil))))
;;;;; evil search and replace
`(evil-ex-substitute-matches ((t (:foreground ,warning :weight normal :strike-through t))))
`(evil-ex-substitute-replacement ((t (:foreground ,tron-bluegreen :weight normal))))
;;;;; highlight todo
`(hl-todo ((t (:inverse-video t))))
;;;;; highlight numbers
`(highlight-numbers-number ((t (:foreground ,numeric))))
;;;;; highlight operators
`(highlight-operators-face ((t (:inherit default))))
;;;;; highlight symbol
`(highlight-symbol-face ((t (:background ,bg3 :distant-foreground ,fg0))))
;;;;; highlight thing
`(highlight-thing ((t (:inherit highlight-symbol-face))))
;;;;; tab-bar-mode
`(tab-bar ((t (:background ,bg0))))
`(tab-bar-tab ((t (:foreground ,fg0 :background ,bg0 :weight bold :box nil))))
`(tab-bar-tab-inactive ((t (:foreground ,fg0 :background ,bg0 :box nil))))
;;;;; tree-sitter
`(tree-sitter-hl-face:method.call ((t (:inherit font-lock-function-name-face))))
`(tree-sitter-hl-face:function.call ((t (:inherit font-lock-function-name-face))))
`(tree-sitter-hl-face:operator ((t (:inherit default))))
`(tree-sitter-hl-face:type.builtin ((t (:inherit font-lock-keyword-face))))
`(tree-sitter-hl-face:number ((t (:inherit highlight-numbers-number))))
`(tree-sitter-hl-face:variable.special ((t (:inherit font-lock-keyword-face))))
;;;;; lsp-ui
`(lsp-ui-doc-background ((t (:background ,bg0))))
;;;;; flycheck
`(flycheck-info ((t (:underline (:style wave :color ,tron-green)))))
`(flycheck-error ((t (:underline (:style wave :color ,tron-lightred)))))
`(flycheck-warning ((t (:underline (:style wave :color ,tron-yellow)))))))
;;;###autoload
(when (and (boundp 'custom-theme-load-path) load-file-name)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
(provide-theme 'tron-legacy)
(provide 'tron-legacy-theme)
;;; tron-legacy-theme.el ends here