;;; 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 . ;; This file is not part of Emacs. ;;; Commentary: ;; An original theme for Emacs 24+ inspired by the look and feel of Tron: Legacy, ;; 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