388 lines
17 KiB
EmacsLisp
388 lines
17 KiB
EmacsLisp
;;; tronesque-theme.el --- Color Theme based on Tron universe.
|
|
|
|
;; This file 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, or (at your option)
|
|
;; any later version.
|
|
|
|
;; This file 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.
|
|
|
|
;; License: GPL-3+
|
|
|
|
;; Copyright (c) 2017 Aurélien Bottazini
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
;; Author: Aurélien Bottazini <aurelienbottazini.com>
|
|
;; URL: https://github.com/aurelienbottazini/tronesque
|
|
;; Version: 2.0
|
|
|
|
;;; Commentary:
|
|
|
|
;; In your init file:
|
|
;; (load-theme 'tronesque)
|
|
;;
|
|
;; You can also add:
|
|
;; (tronesque-mode-line)
|
|
;; To get a custom mode-line with additional colors
|
|
;;
|
|
;; Supports both Emacs with a window system and Emacs within a
|
|
;; terminal. When used within a terminal you should use tronesque
|
|
;; themed ansi colors (available in github repository)
|
|
|
|
;;; Code:
|
|
(deftheme tronesque
|
|
"Theme based on Tron universe. Colors are inspired / taken from the movies.
|
|
More information on Tron: https://en.wikipedia.org/wiki/Tron")
|
|
|
|
(let (
|
|
(base00 (if (window-system) "#081724" "black"))
|
|
(base01 (if (window-system) "#033340" "brightblack"))
|
|
(base02 (if (window-system) "#1d5483" "brightyellow"))
|
|
(base03 (if (window-system) "#2872b2" "brightblue"))
|
|
(base04 (if (window-system) "#d3f9ee" "white"))
|
|
(base05 (if (window-system) "#a6f3dd" "brightgreen"))
|
|
(base06 (if (window-system) "#effffe" "brightwhite"))
|
|
(base07 (if (window-system) "#fffed9" "brightcyan"))
|
|
(red (if (window-system) "#ff694d" "red"))
|
|
(orange (if (window-system) "#f5b55f" "brightred"))
|
|
(yellow (if (window-system) "#fffe4e" "yellow"))
|
|
(magenta (if (window-system) "#afc0fd" "brightmagenta"))
|
|
(violet (if (window-system) "#96a5d9" "magenta"))
|
|
(blue (if (window-system) "#bad6e2" "blue"))
|
|
(cyan (if (window-system) "#d2f1ff" "cyan"))
|
|
(green (if (window-system) "#68f6cb" "green")))
|
|
|
|
(custom-theme-set-faces
|
|
'tronesque
|
|
|
|
|
|
`(button ((t (:background ,base00
|
|
:foreground ,magenta
|
|
:inherit nil
|
|
:box (:line-width 2 :style released-button)))))
|
|
`(cursor ((t (:background ,base06))))
|
|
|
|
`(custom-button ((t (:background ,magenta
|
|
:foreground ,base00
|
|
:inherit nil
|
|
:box (:line-width 2 :style released-button)))))
|
|
`(custom-state ((t (:foreground ,green))))
|
|
`(default ((t (:background ,base00 :foreground ,base04))))
|
|
`(dired-directory ((t (:background ,green :foreground ,base00))))
|
|
`(dired-symlink ((t (:foreground ,yellow))))
|
|
|
|
`(escape-glyph ((t (:foreground ,green))))
|
|
`(flymake-errline ((t (:background ,red
|
|
:foreground ,base00
|
|
:underline nil))))
|
|
`(flymake-warnline ((t (:background ,orange
|
|
:foreground ,base00
|
|
:underline nil))))
|
|
`(font-lock-builtin-face ((t (:slant italic :foreground ,violet))))
|
|
`(font-lock-comment-delimiter-face ((t (:foreground ,base03))))
|
|
`(font-lock-comment-face ((t (:foreground ,base03))))
|
|
`(font-lock-constant-face ((t (:weight bold :foreground ,magenta))))
|
|
`(font-lock-doc-face ((t (:slant italic :foreground ,green))))
|
|
`(font-lock-function-name-face ((t (:foreground ,blue))))
|
|
`(font-lock-keyword-face ((t (:weight bold :foreground ,violet))))
|
|
`(font-lock-negation-char-face ((t (:foreground ,red))))
|
|
`(font-lock-preprocessor-face ((t (:foreground ,violet))))
|
|
`(font-lock-regexp-grouping-backslash ((t (:inherit (bold)))))
|
|
`(font-lock-regexp-grouping-construct ((t (:inherit (bold)))))
|
|
`(font-lock-string-face ((t (:foreground ,green))))
|
|
`(font-lock-type-face ((t (:foreground ,orange))))
|
|
`(font-lock-variable-name-face ((t (:foreground ,red))))
|
|
`(font-lock-warning-face ((t (:foreground ,orange :underline t))))
|
|
`(fringe ((t (:foreground ,base04 :background ,base01))))
|
|
`(header-line ((t (:box (:line-width -1 :color nil :style released-button)
|
|
:foreground ,base00 :background ,base07))))
|
|
`(highlight ((t (:background ,yellow :foreground ,base00))))
|
|
`(hl-line ((t (:background ,base01 :inherit nil))))
|
|
`(idle-highlight ((t (:background ,base01 :foreground nil))))
|
|
`(ido-indicator ((t (:background ,red
|
|
:foreground ,base00
|
|
:width condensed))))
|
|
`(ido-only-match ((t (:background ,green :foreground ,base00))))
|
|
`(ido-first-match ((t (:background ,green :foreground ,base00))))
|
|
`(ido-subdir ((t (:foreground ,red))))
|
|
`(info-menu-star ((t (:foreground ,red))))
|
|
`(info-xref ((t (:foreground ,green))))
|
|
`(isearch ((t (:weight bold :foreground ,base00 :background ,yellow))))
|
|
`(isearch-fail ((t (:weight bold :foreground ,red))))
|
|
`(lazy-highlight ((t (:weight bold
|
|
:foreground ,base00
|
|
:background ,base07))))
|
|
`(link ((t (:foreground ,cyan :underline t))))
|
|
`(link-visited ((t (:foreground ,blue :underline t))))
|
|
`(match ((t (:foreground ,base00 :background ,blue))))
|
|
`(minibuffer-prompt ((t (:foreground ,yellow))))
|
|
`(next-error ((t (:inherit (region)))))
|
|
`(org-hide ((t (:background ,base00 :foreground ,base00))))
|
|
`(org-code ((t (:foreground ,violet))))
|
|
`(org-date ((t (:underline t :foreground ,green))))
|
|
`(org-agenda-date-today ((t (:foreground ,red :weight bold))))
|
|
`(query-regplace ((t (:inherit (isearch)))))
|
|
`(region ((t (:background ,base02))))
|
|
`(secondary-selection ((t (:background ,base01))))
|
|
`(shadow ((t (:foreground ,base02))))
|
|
`(trailing-whitespace ((t (:background ,red))))
|
|
|
|
`(magit-header ((t (:background ,base01
|
|
:foreground ,magenta
|
|
:inherit nil ))))
|
|
`(magit-item-highlight ((t (:background ,base01 :foreground ,base06))))
|
|
`(magit-branch ((t (:foreground ,base05))))
|
|
`(magit-diff-hunk-header ((t (:background ,base02))))
|
|
`(magit-section-title ((t (:background ,orange
|
|
:foreground ,base00
|
|
:inherit nil
|
|
:box (:line-width 2 :style released-button)))))
|
|
`(diff-file-header ((t (:background ,base00
|
|
:foreground ,magenta
|
|
:inherit nil
|
|
:box (:line-width 2 :style released-button)))))
|
|
`(diff-context ((t (:inherit diff-changed :foreground ,base03))))
|
|
`(diff-added ((t (:inherit diff-changed
|
|
:foreground ,green
|
|
:background ,base00))))
|
|
`(diff-removed ((t (:inherit diff-changed
|
|
:foreground ,red
|
|
:background ,base00))))
|
|
|
|
`(outline-1 ((t (:foreground ,red :height 1.7))))
|
|
`(outline-2 ((t (:foreground ,orange :height 1.3))))
|
|
`(outline-3 ((t (:foreground ,yellow :height 1.05))))
|
|
`(outline-4 ((t (:foreground ,blue))))
|
|
`(outline-5 ((t (:foreground ,magenta))))
|
|
`(outline-6 ((t (:foreground ,green))))
|
|
`(outline-7 ((t (:foreground ,cyan))))
|
|
`(outline-8 ((t (:foreground ,violet))))
|
|
|
|
`(success ((t (:background ,green :foreground ,base00 :weight bold))))
|
|
`(compilation-mode-line-exit ((t (:inherit compilation-info
|
|
:background ,green
|
|
:weight bold))))
|
|
`(compilation-mode-line-fail ((t (:inherit compilation-error
|
|
:background ,red
|
|
:weight bold))))
|
|
|
|
`(erc-dangerous-host-face ((t (:foreground ,red))))
|
|
`(erc-direct-msg-face ((t (:foreground ,red))))
|
|
`(erc-error-face ((t (:foreground ,red))))
|
|
`(erc-fool-face ((t (:foreground ,base02))))
|
|
`(erc-header-line ((t (:background ,base07 :foreground ,base00))))
|
|
`(erc-inverse-face ((t (:background ,base04 :foreground ,base00))))
|
|
`(erc-keyword-face ((t (:foreground ,green :weight bold))))
|
|
`(erc-nick-msg-face ((t (:foreground ,red :weight bold))))
|
|
`(erc-notice-face ((t (:foreground ,base02 :weight bold))))
|
|
`(erc-pal-face ((t (:foreground ,magenta :weight bold))))
|
|
`(erc-prompt-face ((t (:background ,violet
|
|
:foreground ,base00
|
|
:weight bold))))
|
|
`(erc-timestamp-face ((t (:foreground ,green :weight bold))))
|
|
`(erc-input-face ((t (:foreground ,orange))))
|
|
`(erc-my-nick-face ((t (:foreground ,yellow))))
|
|
`(erc-current-nick-face ((t (:foreground ,yellow))))
|
|
|
|
`(show-paren-match ((t (:background ,base03 :foreground ,green))))
|
|
`(show-paren-mismatch ((t (:background ,red :foreground ,base00))))
|
|
`(sp-show-pair-match-face ((t (:inherit show-paren-match))))
|
|
`(sp-show-pair-mismatch-face ((t (:inherit show-paren-mismatch))))
|
|
`(sp-pair-overlay-face ((t (:inherit sp-show-pair-match-face))))
|
|
`(ac-completion-face ((t (:foreground ,base02 :underline t))))
|
|
`(ac-candidate-face ((t (:background ,base04 :foreground ,base00))))
|
|
`(ac-candidate-mouse-face ((t (:inherit ac-completion-face))))
|
|
`(ac-selection-face ((t (:background ,base02))))
|
|
`(writegood-weasels-face ((t (:inherit font-lock-warning-face))))
|
|
|
|
`(company-echo-common ((t (:foreground ,orange))))
|
|
`(company-preview ((t (:background ,base02 :foreground ,base06))))
|
|
`(company-preview-common ((t (:inherit company-preview
|
|
:foreground ,base05))))
|
|
`(company-preview-search ((t (:inherit company-preview
|
|
:background ,yellow))))
|
|
`(company-scrollbar-bg ((t (:inherit company-tooltip :background ,violet))))
|
|
`(company-scrollbar-fg ((t (:background ,blue))))
|
|
`(company-template-field ((t (:background ,yellow :foreground ,violet))))
|
|
`(company-tooltip ((t (:background ,base02 :foreground ,base04))))
|
|
`(company-tooltip-annotation ((t (:inherit company-tooltip
|
|
:foreground ,base00))))
|
|
`(company-tooltip-common ((t (:inherit company-tooltip
|
|
:foreground ,base04))))
|
|
`(company-tooltip-common-selection ((t (:inherit company-tooltip-selection
|
|
:foreground ,yellow))))
|
|
`(company-tooltip-selection ((t (:inherit company-tooltip
|
|
:background ,base01))))
|
|
`(helm-buffer-directory ((t (:background ,base00 :foreground ,red))))
|
|
`(helm-buffer-file ((t (:foreground ,base05 :background ,base00))))
|
|
`(helm-buffer-not-saved ((t (:foreground ,orange))))
|
|
`(helm-buffer-process ((t (:foreground ,orange))))
|
|
`(helm-buffer-saved-out ((t (:background ,base00 :foreground ,red))))
|
|
`(helm-buffer-size ((t (:foreground ,magenta))))
|
|
`(helm-candidate-number ((t (:background ,yellow :foreground ,base00))))
|
|
`(helm-header ((t (:inherit header-line))))
|
|
`(helm-prefarg ((t (:foreground ,green))))
|
|
`(helm-selection ((t (:background ,green
|
|
:foreground ,base00
|
|
:underline nil))))
|
|
`(helm-separator ((t (:foreground ,red))))
|
|
`(helm-source-header ((t (:background ,violet
|
|
:foreground ,base00
|
|
:weight bold :height 1.3))))
|
|
`(helm-visible-mark ((t (:background ,green :foreground ,base00))))
|
|
|
|
`(whitespace-empty ((t (:background ,yellow :foreground ,base00))))
|
|
`(whitespace-hspace ((t (:background ,red :foreground ,yellow))))
|
|
`(whitespace-indentation ((t (:background ,red :foreground ,yellow))))
|
|
`(whitespace-line ((t (:foreground ,red))))
|
|
`(whitespace-newline ((t (:foreground ,base02 :weight normal))))
|
|
`(whitespace-space ((t (:background ,base00 :foreground ,base02))))
|
|
`(whitespace-space-after-tab ((t (:background ,yellow :foreground ,red))))
|
|
`(whitespace-pace-before-tab ((t (:background ,yellow :foreground ,orange))))
|
|
`(whitespace-tab ((t (:background ,red :foreground ,yellow))))
|
|
`(whitespace-trailing ((t (:background ,red
|
|
:foreground ,yellow :weight bold))))
|
|
|
|
`(markdown-header-face ((t (:foreground ,red :weight bold))))
|
|
`(markdown-header-face-1 ((t (:inherit outline-1))))
|
|
`(markdown-header-face-2 ((t (:inherit outline-2))))
|
|
`(markdown-header-face-3 ((t (:inherit outline-3))))
|
|
`(markdown-header-face-4 ((t (:inherit outline-4))))
|
|
`(markdown-header-face-5 ((t (:inherit outline-5))))
|
|
)
|
|
|
|
(custom-theme-set-variables
|
|
'tronesque
|
|
|
|
`(ansi-color-names-vector
|
|
;; black, red, green, yellow, blue, magenta, cyan, white
|
|
[,base00 ,red ,green ,yellow ,blue ,magenta ,cyan ,base04])
|
|
`(ansi-term-color-vector
|
|
;; black, red, green, yellow, blue, magenta, cyan, white
|
|
[unspecified ,base00 ,red ,green ,yellow ,blue ,magenta ,cyan ,base04]))
|
|
|
|
;; Extra mode line faces
|
|
(make-face 'mode-line-read-only-face)
|
|
(make-face 'mode-line-modified-face)
|
|
(make-face 'mode-line-clean-face)
|
|
(make-face 'mode-line-folder-face)
|
|
(make-face 'mode-line-filename-face)
|
|
(make-face 'mode-line-position-face)
|
|
(make-face 'mode-line-mode-face)
|
|
(make-face 'mode-line-minor-mode-face)
|
|
(make-face 'mode-line-vc-face)
|
|
(make-face 'mode-line-80col-face)
|
|
|
|
(set-face-attribute 'mode-line nil
|
|
:foreground base00 :background base03
|
|
:inverse-video nil
|
|
:box `(:line-width 2 :color ,base03 :style nil))
|
|
(set-face-attribute 'mode-line-inactive nil
|
|
:foreground base00 :background base01
|
|
:inverse-video nil
|
|
:box `(:line-width 2 :color ,base01 :style nil))
|
|
(set-face-attribute 'mode-line-read-only-face nil
|
|
:inherit 'mode-line-face
|
|
:foreground red)
|
|
(set-face-attribute 'mode-line-modified-face nil
|
|
:inherit 'mode-line-face
|
|
:background red
|
|
:box `(:line-width 2 :color ,red :style nil))
|
|
(set-face-attribute 'mode-line-clean-face nil
|
|
:inherit 'mode-line-face
|
|
:background green
|
|
:box `(:line-width 2 :color ,green :style nil))
|
|
(set-face-attribute 'mode-line-folder-face nil
|
|
:inherit 'mode-line-face
|
|
:foreground base00
|
|
:background blue
|
|
:box `(:line-width 2 :color ,blue :style nil))
|
|
(set-face-attribute 'mode-line-filename-face nil
|
|
:inherit 'mode-line-face
|
|
:foreground base02
|
|
:background orange
|
|
:box `(:line-width 2 :color ,orange :style nil)
|
|
:weight 'bold)
|
|
(set-face-attribute 'mode-line-position-face nil
|
|
:inherit 'mode-line-face
|
|
:height 100)
|
|
(set-face-attribute 'mode-line-mode-face nil
|
|
:inherit 'mode-line-face
|
|
:foreground base00
|
|
:background blue
|
|
:box `(:line-width 2 :color ,blue :style nil))
|
|
(set-face-attribute 'mode-line-minor-mode-face nil
|
|
:foreground base00
|
|
:height 110)
|
|
(set-face-attribute 'mode-line-vc-face nil
|
|
:inherit 'mode-line-face
|
|
:background green
|
|
:box `(:line-width 2 :color ,green :style nil))
|
|
(set-face-attribute 'mode-line-80col-face nil
|
|
:inherit 'mode-line-position-face
|
|
:foreground "black" :background orange
|
|
:box `(:line-width 2 :color ,orange :style nil))
|
|
)
|
|
|
|
(defun tronesque-mode-line ()
|
|
"Change default mode-line."
|
|
(interactive)
|
|
(setq-default
|
|
mode-line-format
|
|
'(
|
|
"%e"
|
|
mode-line-front-space
|
|
mode-line-mule-info
|
|
mode-line-client
|
|
mode-line-modified
|
|
mode-line-remote
|
|
mode-line-frame-identification
|
|
(:propertize " "
|
|
face mode-line-filename-face)
|
|
(:propertize mode-line-buffer-identification
|
|
face mode-line-filename-face)
|
|
(:propertize " "
|
|
face mode-line-filename-face)
|
|
" "
|
|
mode-line-position
|
|
(vc-mode vc-mode)
|
|
" "
|
|
(:propertize " "
|
|
face mode-line-mode-face)
|
|
(:propertize mode-name
|
|
face mode-line-mode-face)
|
|
(:propertize " "
|
|
face mode-line-mode-face)
|
|
|
|
(:eval (propertize (format-mode-line minor-mode-alist)
|
|
'face 'mode-line-minor-mode-face))
|
|
mode-line-misc-info
|
|
mode-line-end-spaces)))
|
|
|
|
;; Helper function
|
|
(defun shorten-directory (dir max-length)
|
|
"Show up a directory named `DIR' with `MAX-LENGTH' characters."
|
|
(let ((path (reverse (split-string (abbreviate-file-name dir) "/")))
|
|
(output ""))
|
|
(when (and path (equal "" (car path)))
|
|
(setq path (cdr path)))
|
|
(while (and path (< (length output) (- max-length 4)))
|
|
(setq output (concat (car path) "/" output))
|
|
(setq path (cdr path)))
|
|
(when path
|
|
(setq output (concat ".../" output)))
|
|
output))
|
|
|
|
|
|
;;;###autoload
|
|
(when load-file-name
|
|
(add-to-list 'custom-theme-load-path
|
|
(file-name-as-directory (file-name-directory load-file-name))))
|
|
|
|
(provide-theme 'tronesque)
|
|
(provide icejam-tronesque)
|
|
;;; icejam-tronesque.el ends here
|