;;; inverse-acme-theme.el --- A theme that looks like an inverse of Acme's color scheme. ;; Author: Dylan Johnson ;; (current maintainer) ;; ;; URL: http://github.com/djohnson/inverse-acme-theme ;; Version: 1.0 ;; Package-Requires: ((autothemer "0.2") (cl-lib "0.5")) ;;; Credits: ;; Forked from the gruvbox-theme just to have access to all the color definitions. ;; Pavel Pertsev created the original theme for Vim, on which this port ;; is based. ;; Lee Machin created the first port of the original theme, which ;; Greduan developed further adding support for several major modes. ;; ;; Jason Milkins (ocodo) has maintained the theme since 2015 and is ;; working with the community to add further mode support and align ;; the project more closely with Vim Gruvbox. ;; background is set as acme-dark0 ;; text is set as acme-light0 ;;; Commentary: ;; I haven't done anything with the Xterm/256 colors yet. ;;; Code: (provide 'inverse-acme-theme) (eval-when-compile (require 'cl-lib)) (require 'autothemer) (unless (>= emacs-major-version 24) (error "Requires Emacs 24 or later")) (defcustom inverse-acme-contrast 'medium "Contrast level for the theme background." :options '(soft medium hard)) (autothemer-deftheme inverse-acme "Acme but reversed; and in a better editor." ((((class color) (min-colors #xFFFFFF)) ; col 1 GUI/24bit ((class color) (min-colors #xFF))) ; col 2 Xterm/256 (acme-dark0_hard "#1d2021" "#1c1c1c") (acme-dark0 "#282828" "#262626") (acme-dark0_soft "#32302f" "#303030") (acme-dark1 "#3c3836" "#3a3a3a") (acme-dark2 "#504945" "#4e4e4e") (acme-dark3 "#665c54" "#626262") (acme-dark4 "#7c6f64" "#767676") (acme-gray "#928374" "#8a8a8a") (acme-light0_hard "#ffffc8" "#ffffd7") (acme-light0 "#fdf4c1" "#ffffaf") (acme-light0_soft "#f4e8ba" "#ffffaf") (acme-light1 "#ebdbb2" "#ffdfaf") (acme-light2 "#d5c4a1" "#bcbcbc") (acme-light3 "#bdae93" "#a8a8a8") (acme-light4 "#a89984" "#949494") (acme-bright_red "#fb4933" "#d75f5f") (acme-bright_green "#b8bb26" "#afaf00") (acme-bright_yellow "#fabd2f" "#ffaf00") (acme-bright_blue "#83a598" "#87afaf") (acme-bright_purple "#d3869b" "#d787af") (acme-bright_aqua "#8ec07c" "#87af87") (acme-bright_orange "#fe8019" "#ff8700") (acme-neutral_red "#fb4934" "#d75f5f") (acme-neutral_green "#b8bb26" "#afaf00") (acme-neutral_yellow "#fabd2f" "#ffaf00") (acme-neutral_blue "#83a598" "#87afaf") (acme-neutral_purple "#d3869b" "#d787af") (acme-neutral_aqua "#8ec07c" "#87af87") (acme-neutral_orange "#fe8019" "#ff8700") (acme-faded_red "#9d0006" "#870000") (acme-faded_green "#79740e" "#878700") (acme-faded_yellow "#b57614" "#af8700") (acme-faded_blue "#076678" "#005f87") (acme-faded_purple "#8f3f71" "#875f87") (acme-faded_aqua "#427b58" "#5f8787") (acme-faded_orange "#af3a03" "#af5f00") (acme-dark_red "#421E1E" "#5f0000") (acme-dark_blue "#2B3C44" "#000087") (acme-dark_aqua "#36473A" "#005f5f") (acme-delimiter-one "#458588" "#008787") (acme-delimiter-two "#b16286" "#d75f87") (acme-delimiter-three "#8ec07c" "#87af87") (acme-delimiter-four "#d65d0e" "#d75f00") (acme-white "#FFFFFF" "#FFFFFF") (acme-black "#000000" "#000000") (acme-sienna "#DD6F48" "#d7875f") (acme-darkslategray4 "#528B8B" "#5f8787") (acme-lightblue4 "#66999D" "#5fafaf") (acme-burlywood4 "#BBAA97" "#afaf87") (acme-aquamarine4 "#83A598" "#87af87") (acme-turquoise4 "#61ACBB" "#5fafaf") (acme-bg (cl-case inverse-acme-contrast (hard acme-dark0_hard) (soft acme-dark0_soft) ;; Medium by default. (t acme-dark0)))) ;; UI ((default (:background acme-bg :foreground acme-light0)) (cursor (:background acme-light0)) (mode-line (:background acme-dark2 :foreground acme-light2 :box nil)) (mode-line-inactive (:background acme-dark1 :foreground acme-light4 :box nil)) (fringe (:background acme-bg)) (linum (:background acme-bg :foreground acme-dark4)) (hl-line (:background acme-dark1)) (region (:background acme-dark2)) ;;selection (secondary-selection (:background acme-dark1)) (minibuffer-prompt (:background acme-bg :foreground acme-neutral_green :bold t)) (vertical-border (:foreground acme-dark2)) (link (:foreground acme-faded_blue :underline t)) (shadow (:foreground acme-dark4)) ;; Built-in syntax (font-lock-builtin-face (:foreground acme-light0)) (font-lock-constant-face (:foreground acme-light0)) (font-lock-comment-face (:foreground acme-light0)) (font-lock-function-name-face (:foreground acme-light0)) (font-lock-keyword-face (:foreground acme-light0)) (font-lock-string-face (:foreground acme-light0)) (font-lock-variable-name-face (:foreground acme-light0)) (font-lock-type-face (:foreground acme-light0)) (font-lock-warning-face (:foreground acme-light0)) ;; whitespace-mode (whitespace-space (:background acme-bg :foreground acme-dark4)) (whitespace-hspace (:background acme-bg :foreground acme-dark4)) (whitespace-tab (:background acme-bg :foreground acme-dark4)) (whitespace-newline (:background acme-bg :foreground acme-dark4)) (whitespace-trailing (:background acme-dark1 :foreground acme-neutral_red)) (whitespace-line (:background acme-dark1 :foreground acme-neutral_red)) (whitespace-space-before-tab (:background acme-bg :foreground acme-dark4)) (whitespace-indentation (:background acme-bg :foreground acme-dark4)) (whitespace-empty (:background nil :foreground nil)) (whitespace-space-after-tab (:background acme-bg :foreground acme-dark4)) ;; RainbowDelimiters (rainbow-delimiters-depth-1-face (:foreground acme-delimiter-one)) (rainbow-delimiters-depth-2-face (:foreground acme-delimiter-two)) (rainbow-delimiters-depth-3-face (:foreground acme-delimiter-three)) (rainbow-delimiters-depth-4-face (:foreground acme-delimiter-four)) (rainbow-delimiters-depth-5-face (:foreground acme-delimiter-one)) (rainbow-delimiters-depth-6-face (:foreground acme-delimiter-two)) (rainbow-delimiters-depth-7-face (:foreground acme-delimiter-three)) (rainbow-delimiters-depth-8-face (:foreground acme-delimiter-four)) (rainbow-delimiters-depth-9-face (:foreground acme-delimiter-one)) (rainbow-delimiters-depth-10-face (:foreground acme-delimiter-two)) (rainbow-delimiters-depth-11-face (:foreground acme-delimiter-three)) (rainbow-delimiters-depth-12-face (:foreground acme-delimiter-four)) (rainbow-delimiters-unmatched-face (:background nil :foreground acme-light0)) ;; sh-mode (sh-quoted-exec (:foreground acme-light0)) ;; eshell-mode (eshell-ls-archive (:foreground acme-light0)) (eshell-ls-backup (:foreground acme-light0)) (eshell-ls-clutter (:foreground acme-light0)) (eshell-ls-directory (:foreground acme-light0)) (eshell-ls-executable (:foreground acme-light0)) (eshell-ls-missing (:foreground acme-light0)) (eshell-ls-product (:foreground acme-light0)) (eshell-ls-readonly (:foreground acme-light0)) (eshell-ls-special (:foreground acme-light0)) (eshell-ls-symlink (:foreground acme-light0)) (eshell-ls-unreadable (:foreground acme-light2)) (eshell-prompt (:foreground acme-gray)) ;; ocaml (tuareg-font-lock-operator-face (:foreground acme-light0)) (tuareg-font-lock-governing-face (:foreground acme-light0)) ;; coq via proof general (coq-solve-tactics-face (:foreground acme-light0)) (coq-cheat-face (:foreground acme-light0)) (proof-tactics-name-face (:foreground acme-light0)) (proof-tacticals-name-face (:foreground acme-light0)) ;; linum-relative (linum-relative-current-face (:background acme-dark1 :foreground acme-light4)) ;; Highlight indentation mode (highlight-indentation-current-column-face (:background acme-dark2)) (highlight-indentation-face (:background acme-dark1)) ;; Smartparens (sp-pair-overlay-face (:background acme-dark2)) (sp-show-pair-match-face (:background acme-dark2)) ;; Pair tags highlight (sp-show-pair-mismatch-face (:background acme-neutral_red)) ;; Highlight for bracket without pair ;;(sp-wrap-overlay-face (:inherit 'sp-wrap-overlay-face)) ;;(sp-wrap-tag-overlay-face (:inherit 'sp-wrap-overlay-face)) ;; elscreen (elscreen-tab-background-face (:background acme-bg :box nil)) ;; Tab bar, not the tabs (elscreen-tab-control-face (:background acme-dark2 :foreground acme-neutral_red :underline nil :box nil)) ;; The controls (elscreen-tab-current-screen-face (:background acme-dark4 :foreground acme-dark0 :box nil)) ;; Current tab (elscreen-tab-other-screen-face (:background acme-dark2 :foreground acme-light4 :underline nil :box nil)) ;; Inactive tab ;; ag (The Silver Searcher) (ag-hit-face (:foreground acme-neutral_blue)) (ag-match-face (:foreground acme-neutral_red)) ;; Diffs (diff-changed (:background nil :foreground acme-light1)) (diff-added (:background nil :foreground acme-neutral_green)) (diff-removed (:background nil :foreground acme-neutral_red)) (diff-indicator-changed (:inherit 'diff-changed)) (diff-indicator-added (:inherit 'diff-added)) (diff-indicator-removed (:inherit 'diff-removed)) (js2-warning (:underline (:color acme-bright_yellow :style 'wave))) (js2-error (:underline (:color acme-bright_red :style 'wave))) (js2-external-variable (:underline (:color acme-bright_aqua :style 'wave))) (js2-jsdoc-tag (:background nil :foreground acme-gray )) (js2-jsdoc-type (:background nil :foreground acme-light4)) (js2-jsdoc-value (:background nil :foreground acme-light3)) (js2-function-param (:background nil :foreground acme-bright_aqua)) (js2-function-call (:background nil :foreground acme-bright_blue)) (js2-instance-member (:background nil :foreground acme-bright_orange)) (js2-private-member (:background nil :foreground acme-faded_yellow)) (js2-private-function-call (:background nil :foreground acme-faded_aqua)) (js2-jsdoc-html-tag-name (:background nil :foreground acme-light4)) (js2-jsdoc-html-tag-delimiter (:background nil :foreground acme-light3)) ;; popup (popup-face (:foreground acme-light1 :background acme-dark1)) (popup-menu-mouse-face (:foreground acme-light0 :background acme-faded_green)) (popup-menu-selection-face (:foreground acme-light0 :background acme-faded_green)) (popup-tip-face (:foreground acme-light2 :background acme-dark2)) ;; helm (helm-M-x-key (:foreground acme-neutral_orange )) (helm-action (:foreground acme-white :underline t)) (helm-bookmark-addressbook (:foreground acme-neutral_red)) (helm-bookmark-directory (:foreground acme-bright_purple)) (helm-bookmark-file (:foreground acme-faded_blue)) (helm-bookmark-gnus (:foreground acme-faded_purple)) (helm-bookmark-info (:foreground acme-turquoise4)) (helm-bookmark-man (:foreground acme-sienna)) (helm-bookmark-w3m (:foreground acme-neutral_yellow)) (helm-buffer-directory (:foreground acme-white :background acme-bright_blue)) (helm-buffer-not-saved (:foreground acme-faded_red)) (helm-buffer-process (:foreground acme-burlywood4)) (helm-buffer-saved-out (:foreground acme-bright_red)) (helm-buffer-size (:foreground acme-bright_purple)) (helm-candidate-number (:foreground acme-neutral_green)) (helm-ff-directory (:foreground acme-neutral_purple)) (helm-ff-executable (:foreground acme-turquoise4)) (helm-ff-file (:foreground acme-sienna)) (helm-ff-invalid-symlink (:foreground acme-white :background acme-bright_red)) (helm-ff-prefix (:foreground acme-black :background acme-neutral_yellow)) (helm-ff-symlink (:foreground acme-neutral_orange)) (helm-grep-cmd-line (:foreground acme-neutral_green)) (helm-grep-file (:foreground acme-faded_purple)) (helm-grep-finish (:foreground acme-turquoise4)) (helm-grep-lineno (:foreground acme-neutral_orange)) (helm-grep-match (:foreground acme-neutral_yellow)) (helm-grep-running (:foreground acme-neutral_red)) (helm-header (:foreground acme-aquamarine4)) (helm-helper (:foreground acme-aquamarine4)) (helm-history-deleted (:foreground acme-black :background acme-bright_red)) (helm-history-remote (:foreground acme-faded_red)) (helm-lisp-completion-info (:foreground acme-faded_orange)) (helm-lisp-show-completion (:foreground acme-bright_red)) (helm-locate-finish (:foreground acme-white :background acme-aquamarine4)) (helm-match (:foreground acme-neutral_orange)) (helm-moccur-buffer (:foreground acme-bright_aqua :underline t)) (helm-prefarg (:foreground acme-turquoise4)) (helm-selection (:foreground acme-white :background acme-dark2)) (helm-selection-line (:foreground acme-white :background acme-dark2)) (helm-separator (:foreground acme-faded_red)) (helm-source-header (:foreground acme-light2)) (helm-visible-mark (:foreground acme-black :background acme-light3)) ;; company-mode (company-scrollbar-bg (:background acme-dark1)) (company-scrollbar-fg (:background acme-dark0_soft)) (company-tooltip (:background acme-dark0_soft)) (company-tooltip-annotation (:foreground acme-neutral_green)) (company-tooltip-selection (:foreground acme-neutral_purple)) (company-tooltip-common (:foreground acme-neutral_blue :underline t)) (company-tooltip-common-selection (:foreground acme-neutral_blue :underline t)) (company-preview-common (:foreground acme-neutral_purple)) ;; Term (term-color-black (:foreground acme-dark1)) (term-color-blue (:foreground acme-neutral_blue)) (term-color-cyan (:foreground acme-neutral_aqua)) (term-color-green (:foreground acme-neutral_green)) (term-color-magenta (:foreground acme-neutral_purple)) (term-color-red (:foreground acme-neutral_red)) (term-color-white (:foreground acme-light1)) (term-color-yellow (:foreground acme-neutral_yellow)) (term-default-fg-color (:foreground acme-light0)) (term-default-bg-color (:background acme-bg)) ;; message-mode (message-header-to (:inherit 'font-lock-variable-name-face)) (message-header-cc (:inherit 'font-lock-variable-name-face)) (message-header-subject (:foreground acme-neutral_orange :weight 'bold)) (message-header-newsgroups (:foreground acme-neutral_yellow :weight 'bold)) (message-header-other (:inherit 'font-lock-variable-name-face)) (message-header-name (:inherit 'font-lock-keyword-face)) (message-header-xheader (:foreground acme-faded_blue)) (message-separator (:inherit 'font-lock-comment-face)) (message-cited-text (:inherit 'font-lock-comment-face)) (message-mml (:foreground acme-faded_green :weight 'bold)) ;; org-mode (org-hide (:foreground acme-dark0)) (org-level-1 (:foreground acme-neutral_blue)) (org-level-2 (:foreground acme-neutral_yellow)) (org-level-3 (:foreground acme-neutral_purple)) (org-level-4 (:foreground acme-neutral_red)) (org-level-5 (:foreground acme-neutral_green)) (org-level-6 (:foreground acme-neutral_aqua)) (org-level-7 (:foreground acme-faded_blue)) (org-level-8 (:foreground acme-neutral_orange)) (org-special-keyword (:inherit 'font-lock-comment-face)) (org-drawer (:inherit 'font-lock-function-face)) (org-column (:background acme-dark0)) (org-column-title (:background acme-dark0 :underline t :weight 'bold)) (org-warning (:foreground acme-neutral_red :weight 'bold :underline nil :bold t)) (org-archived (:foreground acme-light0 :weight 'bold)) (org-link (:foreground acme-faded_aqua :underline t)) (org-footnote (:foreground acme-neutral_aqua :underline t)) (org-ellipsis (:foreground acme-light4 :underline t)) (org-date (:foreground acme-neutral_blue :underline t)) (org-sexp-date (:foreground acme-faded_blue :underline t)) (org-tag (:bold t :weight 'bold)) (org-list-dt (:bold t :weight 'bold)) (org-todo (:foreground acme-neutral_red :weight 'bold :bold t)) (org-done (:foreground acme-neutral_aqua :weight 'bold :bold t)) (org-agenda-done (:foreground acme-neutral_aqua)) (org-headline-done (:foreground acme-neutral_aqua)) (org-table (:foreground acme-neutral_blue)) (org-formula (:foreground acme-neutral_yellow)) (org-document-title (:foreground acme-faded_blue)) (org-document-info (:foreground acme-faded_blue)) (org-agenda-structure (:inherit 'font-lock-comment-face)) (org-agenda-date-today (:foreground acme-light0 :weight 'bold :italic t)) (org-scheduled (:foreground acme-neutral_yellow)) (org-scheduled-today (:foreground acme-neutral_blue)) (org-scheduled-previously (:foreground acme-faded_red)) (org-upcoming-deadline (:inherit 'font-lock-keyword-face)) (org-deadline-announce (:foreground acme-faded_red)) (org-time-grid (:foreground acme-faded_orange)) ;; org-habit (org-habit-clear-face (:background acme-faded_blue)) (org-habit-clear-future-face (:background acme-neutral_blue)) (org-habit-ready-face (:background acme-faded_green)) (org-habit-ready-future-face (:background acme-neutral_green)) (org-habit-alert-face (:background acme-faded_yellow)) (org-habit-alert-future-face (:background acme-neutral_yellow)) (org-habit-overdue-face (:background acme-faded_red)) (org-habit-overdue-future-face (:background acme-neutral_red)) ;; elfeed (elfeed-search-title-face (:foreground acme-gray )) (elfeed-search-unread-title-face (:foreground acme-light0)) (elfeed-search-date-face (:inherit 'font-lock-builtin-face :underline t)) (elfeed-search-feed-face (:inherit 'font-lock-variable-name-face)) (elfeed-search-tag-face (:inherit 'font-lock-keyword-face)) (elfeed-search-last-update-face (:inherit 'font-lock-comment-face)) (elfeed-search-unread-count-face (:inherit 'font-lock-comment-face)) (elfeed-search-filter-face (:inherit 'font-lock-string-face)) ;; Smart-mode-line (sml/global (:foreground acme-burlywood4 :inverse-video nil)) (sml/modes (:foreground acme-bright_green)) (sml/filename (:foreground acme-bright_red :weight 'bold)) (sml/prefix (:foreground acme-light1)) (sml/read-only (:foreground acme-neutral_blue)) (persp-selected-face (:foreground acme-neutral_orange)) ;;isearch (isearch (:foreground acme-black :background acme-neutral_orange)) (lazy-highlight (:foreground acme-black :background acme-neutral_yellow)) (isearch-fail (:foreground acme-light0 :background acme-bright_red)) ;; markdown-mode (markdown-header-face-1 (:foreground acme-light0)) (markdown-header-face-2 (:foreground acme-light0)) (markdown-header-face-3 (:foreground acme-light0)) (markdown-header-face-4 (:foreground acme-light0)) (markdown-header-face-5 (:foreground acme-light0)) (markdown-header-face-6 (:foreground acme-light0)) ;; anzu-mode (anzu-mode-line (:foreground acme-bright_yellow :weight 'bold)) (anzu-match-1 (:background acme-bright_green)) (anzu-match-2 (:background acme-faded_yellow)) (anzu-match-3 (:background acme-aquamarine4)) (anzu-replace-to (:foreground acme-bright_yellow)) (anzu-replace-highlight (:inherit 'isearch)) ;; Ace-jump-mode (ace-jump-face-background (:foreground acme-light4 :background acme-bg :inverse-video nil)) (ace-jump-face-foreground (:foreground acme-bright_red :background acme-bg :inverse-video nil :box 1)) ;; Ace-window (aw-background-face (:forground acme-light1 :background acme-bg :inverse-video nil)) (aw-leading-char-face (:foreground acme-bright_orange :background acme-bg :height 4.0 :box (:line-width 1 :color acme-bright_orange))) ;; show-paren (show-paren-match (:background acme-dark3 :weight 'bold)) (show-paren-mismatch (:background acme-bright_red :foreground acme-dark3 :weight 'bold)) ;; ivy (ivy-current-match (:foreground acme-white :weight 'bold :underline t)) (ivy-minibuffer-match-face-1 (:foreground acme-neutral_orange)) (ivy-minibuffer-match-face-2 (:foreground acme-neutral_yellow)) (ivy-minibuffer-match-face-3 (:foreground acme-faded_orange)) (ivy-minibuffer-match-face-4 (:foreground acme-faded_yellow)) ;; MODE SUPPORT: dired+ (diredp-file-name (:foreground acme-light2)) (diredp-file-suffix (:foreground acme-light4)) (diredp-compressed-file-suffix (:foreground acme-faded_blue)) (diredp-dir-name (:foreground acme-faded_blue)) (diredp-dir-heading (:foreground acme-bright_blue)) (diredp-symlink (:foreground acme-bright_orange)) (diredp-date-time (:foreground acme-light3)) (diredp-number (:foreground acme-faded_blue)) (diredp-no-priv (:foreground acme-dark4)) (diredp-other-priv (:foreground acme-dark2)) (diredp-rare-priv (:foreground acme-dark4)) (diredp-ignored-file-name (:foreground acme-dark4)) (diredp-dir-priv (:foreground acme-faded_blue :background acme-dark_blue)) (diredp-exec-priv (:foreground acme-faded_blue :background acme-dark_blue)) (diredp-link-priv (:foreground acme-faded_aqua :background acme-dark_aqua)) (diredp-read-priv (:foreground acme-bright_red :background acme-dark_red)) (diredp-write-priv (:foreground acme-bright_aqua :background acme-dark_aqua))) (custom-theme-set-variables 'inverse-acme `(ansi-color-names-vector [,acme-dark1 ,acme-neutral_red ,acme-neutral_green ,acme-neutral_yellow ,acme-neutral_blue ,acme-neutral_purple ,acme-neutral_aqua ,acme-light1]))) ;;;###autoload (and load-file-name (boundp 'custom-theme-load-path) (add-to-list 'custom-theme-load-path (file-name-as-directory (file-name-directory load-file-name)))) (provide-theme 'inverse-acme) ;;; inverse-acme-theme.el ends here