;;; monochrome-theme.el --- A dark Emacs 24 theme for your focused hacking sessions
;; Copyright (C) 2011-2014 Xavier Noria
;;
;; Author: Xavier Noria <fxn@hashref.com>
;;
;; Just throw this file into ~/.emacs.d and
;;
;; M-x load-theme RET monochrome RET
;;
;; or put in your init file
;;
;; (load-theme 'monochrome)
;;
;; This theme is based on the builtin dichromacy theme.
;;
;; Works with Emacs 24.
(deftheme monochrome
"Gray on black for your focused hacking sessions.")
(font-lock-add-keywords 'c-mode
'(("\\(\\w+\\)\\s-*\("
(1 font-lock-function-name-face)))
t)
(let ((class '((class color) (min-colors 10)))
(black "black")
(white "white")
(lgray "light gray")
(dgray "dark gray")
(sgray "light slate gray"))
(custom-theme-set-faces
'monochrome
(if (window-system)
`(default ((,class (:foreground ,lgray :background ,black)))))
`(cursor ((,class (:background ,lgray))))
;; Highlighting faces
`(fringe ((t (:background "black" :foreground "light gray"))))
`(highlight ((t (:background "#333333"))))
`(region ((t (:background "#333333"))))
`(secondary-selection ((,class (:foreground: ,black :background ,sgray))))
`(isearch ((,class (:foreground ,black :background ,lgray))))
`(lazy-highlight ((,class (:foreground ,black :background ,lgray))))
`(linum ((t (:foreground "dim gray" :slant italic))))
`(trailing-whitespace ((,class (:background "red"))))
;; `(whitespace-tab ((t (:background "#Fafad2" :foreground "darkgray"))))
;; Mode line faces
`(mode-line ((t (:background "black" :foreground ,sgray :weight bold :box (:line-width -1 :style released-button)))))
`(mode-line-inactive ((t (:background "dim gray" :foreground "black" :box (:line-width -1 :style released-button)))))
;; Whitespace-mode
`(whitespace-empty ((,class (:background unspecified :foreground "red"))))
`(whitespace-line ((,class (:background ,lgray :foreground ,black))))
`(whitespace-space ((t (:foreground ,dgray))))
`(whitespace-tab ((t (:foreground ,dgray))))
;; Escape and prompt faces
`(minibuffer-prompt ((,class (:weight bold :foreground ,white))))
`(escape-glyph ((,class (:foreground ,lgray))))
`(error ((,class (:weight bold :slant italic :foreground "red"))))
`(warning ((,class (:foreground "yellow"))))
`(success ((,class (:foreground "green"))))
;; Font lock faces
`(font-lock-builtin-face ((,class (:foreground ,dgray))))
`(font-lock-comment-face ((,class (:slant italic :foreground ,dgray))))
`(font-lock-constant-face ((,class (:weight bold :foreground ,sgray))))
`(font-lock-function-name-face ((t (:foreground ,sgray :weight bold))))
`(font-lock-keyword-face ((,class (:weight bold :foreground ,white))))
;; `(font-lock-string-face ((,class (:foreground ,sgray))))
`(font-lock-string-face ((t (:foreground "white" :weight ultra-bold))))
`(font-lock-type-face ((,class (:weight bold :foreground ,lgray))))
`(font-lock-variable-name-face ((,class (:weight bold :foreground ,sgray))))
`(font-lock-warning-face ((,class (:foreground "yellow"))))
;; `(font-lock-function-name-face ((,class (:foreground ,sgray :weight bold))))
;; Button and link faces
`(link ((,class (:underline t :foreground ,lgray))))
`(link-visited ((,class (:underline t :foreground ,lgray))))
;; Show-paren
`(show-paren-match ((t (:background ,sgray))))
`(show-paren-mismatch ((t (:background "red"))))
;; Speedbar
`(speedbar-button-face ((,class (:foreground ,dgray))))
`(speedbar-file-face ((,class (:foreground ,lgray))))
`(speedbar-directory-face ((,class (:weight bold :foreground ,white))))
`(speedbar-tag-face ((,class (:foreground ,dgray))))
`(speedbar-selected-face ((,class (:underline ,lgray :foreground ,lgray))))
`(speedbar-highlight-face ((,class (:weight bold :background ,black :foreground ,white))))
;; ido
`(ido-first-match ((,class (:foreground ,lgray))))
`(ido-only-match ((,class (:underline ,lgray :foreground ,lgray))))
`(ido-subdir ((,class (:weight bold :foreground ,white))))
;; MuMaMo
`(mumamo-background-chunk-major ((,class (:background ,black))))
`(mumamo-background-chunk-submode1 ((,class (:background ,black))))
`(mumamo-background-chunk-submode2 ((,class (:background ,black))))
`(mumamo-background-chunk-submode3 ((,class (:background ,black))))
`(mumamo-background-chunk-submode4 ((,class (:background ,black))))
`(mumamo-border-face-in ((,class (:slant unspecified :underline unspecified
:weight bold :foreground ,white))))
`(mumamo-border-face-out ((,class (:slant unspecified :underline unspecified
:weight bold :foreground ,white))))
;; Gnus faces
`(gnus-group-news-1 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-news-1-low ((,class (:foreground ,lgray))))
`(gnus-group-news-2 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-news-2-low ((,class (:foreground ,lgray))))
`(gnus-group-news-3 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-news-3-low ((,class (:foreground ,lgray))))
`(gnus-group-news-4 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-news-4-low ((,class (:foreground ,lgray))))
`(gnus-group-news-5 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-news-5-low ((,class (:foreground ,lgray))))
`(gnus-group-news-low ((,class (:foreground ,lgray))))
`(gnus-group-mail-1 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-mail-1-low ((,class (:foreground ,lgray))))
`(gnus-group-mail-2 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-mail-2-low ((,class (:foreground ,lgray))))
`(gnus-group-mail-3 ((,class (:weight bold :foreground ,lgray))))
`(gnus-group-mail-3-low ((,class (:foreground ,lgray))))
`(gnus-group-mail-low ((,class (:foreground ,lgray))))
`(gnus-header-content ((,class (:foreground ,lgray))))
`(gnus-header-from ((,class (:weight bold :foreground ,lgray))))
`(gnus-header-subject ((,class (:foreground ,lgray))))
`(gnus-header-name ((,class (:foreground ,lgray))))
`(gnus-header-newsgroups ((,class (:foreground ,lgray))))
;; Message faces
`(message-header-name ((,class (:foreground ,lgray))))
`(message-header-cc ((,class (:foreground ,lgray))))
`(message-header-other ((,class (:foreground ,lgray))))
`(message-header-subject ((,class (:foreground ,lgray))))
`(message-header-to ((,class (:weight bold :foreground ,lgray))))
`(message-cited-text ((,class (:slant italic :foreground ,lgray))))
`(message-separator ((,class (:weight bold :foreground ,lgray))))
;; EShell
`(eshell-prompt ((,class (:foreground ,white :bold t))))
`(eshell-ls-archive ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-backup ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-clutter ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-directory ((,class (:foreground ,lgray :bold t))))
`(eshell-ls-executable ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-missing ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-product ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-readonly ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-special ((,class (:inherit eshell-ls-unreadable))))
`(eshell-ls-symlink ((,class (:inherit eshell-ls-unreadable))))
;; easy-kill
`(easy-kill-selection ((t (:background "#333333"))))
;; Org-mode
`(org-level-1 ((t (:bold t :foreground ,lgray :height 1.5))))
`(org-level-2 ((t (:bold nil :foreground ,lgray :height 1.2))))
`(org-level-3 ((t (:bold t :foreground ,lgray :height 1.0))))
`(org-level-4 ((t (:bold nil :foreground ,lgray :height 1.0))))
`(org-link ((t (:foreground ,sgray :underline t))))
`(org-todo ((t (:bold t :foreground "red"))))
`(org-done ((t (:bold t :foreground "green"))))
`(org-verbatim ((t (:foreground "dim gray"))))
;; helm
`(helm-header ((t (:foreground ,dgray :background ,black :underline nil :box nil))))
`(helm-source-header
((t (:foreground ,white
:background ,black
:underline nil
:weight bold
:box (:line-width 1 :style released-button)))))
`(helm-selection-line ((t (:background ,black))))
`(helm-visible-mark ((t (:foreground ,black :background ,white))))
`(helm-candidate-number ((t (:foreground ,lgray :background ,black))))
`(helm-separator ((t (:foreground ,white :background ,black))))
`(helm-time-zone-current ((t (:foreground ,lgray :background ,black))))
`(helm-time-zone-home ((t (:foreground ,white :background ,black))))
`(helm-bookmark-addressbook ((t (:foreground ,lgray :background ,black))))
`(helm-bookmark-directory ((t (:foreground nil :background nil :inherit helm-ff-directory))))
`(helm-bookmark-file ((t (:foreground nil :background nil :inherit helm-ff-file))))
`(helm-bookmark-gnus ((t (:foreground ,white :background ,black))))
`(helm-bookmark-info ((t (:foreground ,lgray :background ,black))))
`(helm-bookmark-man ((t (:foreground ,white :background ,black))))
`(helm-bookmark-w3m ((t (:foreground ,white :background ,black))))
`(helm-buffer-directory ((t (:background ,white :foreground ,sgray :weight bold))))
`(helm-buffer-not-saved ((t (:foreground ,white :background ,black))))
`(helm-buffer-process ((t (:foreground ,white :background ,black))))
`(helm-buffer-saved-out ((t (:foreground ,lgray :background ,black))))
`(helm-buffer-size ((t (:foreground ,lgray :background ,black))))
`(helm-ff-directory ((t (:foreground ,white :background ,black :weight bold))))
`(helm-ff-file ((t (:foreground ,lgray :background ,black :weight normal))))
`(helm-ff-executable ((t (:foreground ,lgray :background ,black :weight normal))))
`(helm-ff-invalid-symlink ((t (:foreground ,white :background ,black :weight bold))))
`(helm-ff-symlink ((t (:foreground ,white :background ,black :weight bold))))
`(helm-ff-prefix ((t (:foreground ,black :background ,white :weight normal))))
`(helm-grep-cmd-line ((t (:foreground ,white :background ,black))))
`(helm-grep-file ((t (:foreground ,lgray :background ,black))))
`(helm-grep-finish ((t (:foreground ,lgray :background ,black))))
`(helm-grep-lineno ((t (:foreground ,lgray :background ,black))))
`(helm-grep-match ((t (:foreground nil :background nil :inherit helm-match))))
`(helm-grep-running ((t (:foreground ,white :background ,black))))
`(helm-moccur-buffer ((t (:foreground ,white :background ,black))))
`(helm-mu-contacts-address-face ((t (:foreground ,lgray :background ,black))))
`(helm-mu-contacts-name-face ((t (:foreground ,lgray :background ,black))))
`(helm-match ((t (:background "dim gray"))))
`(helm-selection ((t (:background "#3b3b3b" :underline t))))
;; diff
'(diff-added ((t (:foreground "dark sea green"))))
'(diff-context ((t (:foreground "white" :weight bold))))
'(diff-file-header ((t (:foreground "white" :weight bold))))
'(diff-header ((t (:background "brightblack"))))
'(diff-indicator-added ((t (:foreground "dark sea green"))))
'(diff-indicator-removed ((t (:foreground "light coral"))))
'(diff-refine-added ((t (:inherit diff-refine-change :background "#Caff70" :foreground "black" :weight bold))))
'(diff-refine-removed ((t (:background "red" :foreground "white" :weight bold))))
'(diff-removed ((t (:foreground "light coral"))))
;; Magit
'(magit-diff-add ((t (:foreground "dark sea green"))))
'(magit-diff-del ((t (:foreground "light coral"))))
'(magit-diff-file-header ((t (:box (:line-width 2 :color "grey75" :style released-button)))))
'(magit-diff-hunk-header ((t (:weight bold))))
'(magit-item-highlight ((t (:weight bold))))
'(magit-section-title ((t (:underline t :weight bold))))
'(magit-key-mode-button-face ((t (:foreground "yellow" :weight bold))))
'(magit-key-mode-switch-face ((t (:foreground "yellow" :weight bold))))
'(makey-key-mode-button-face ((t (:foreground "yellow" :weight bold))))
;; smartparens
'(sp-show-pair-match-face ((t (:background "honeydew" :foreground "dim gray"))))
;; highlight-symbol-face
`(highlight-symbol-face ((t (:background "#333333"))))
;; volatile-highlights
`(vhl/default-face ((t (:background "#333333"))))
;; rainbow-identifiers
`(rainbow-identifiers-identifier-1 ((t (:foreground "#9999bb" :weight bold))))
`(rainbow-identifiers-identifier-10 ((t (:foreground "#e0a0bc" :weight bold))))
`(rainbow-identifiers-identifier-11 ((t (:foreground "#a7c0b9" :weight bold))))
`(rainbow-identifiers-identifier-12 ((t (:foreground "#a7aac0" :weight bold))))
`(rainbow-identifiers-identifier-13 ((t (:foreground "#c0a7bd" :weight bold))))
`(rainbow-identifiers-identifier-14 ((t (:foreground "#c0afa7" :weight bold))))
`(rainbow-identifiers-identifier-15 ((t (:foreground "#b3c0a7" :weight bold))))
`(rainbow-identifiers-identifier-2 ((t (:foreground "#bb99b4" :weight bold))))
`(rainbow-identifiers-identifier-3 ((t (:foreground "#bba699" :weight bold))))
`(rainbow-identifiers-identifier-4 ((t (:foreground "#a6bb99" :weight bold))))
`(rainbow-identifiers-identifier-5 ((t (:foreground "#99bbb4" :weight bold))))
`(rainbow-identifiers-identifier-6 ((t (:foreground "#e0d0a0" :weight bold))))
`(rainbow-identifiers-identifier-7 ((t (:foreground "#a3e0a0" :weight bold))))
`(rainbow-identifiers-identifier-8 ((t (:foreground "#a0d6e0" :weight bold))))
`(rainbow-identifiers-identifier-9 ((t (:foreground "#b6a0e0" :weight bold))))
;; rainbow-delimiters
`(rainbow-delimiters-depth-1-face ((t (:foreground "grey55" :weight bold))))
`(rainbow-delimiters-depth-2-face ((t (:foreground "#93a8c6" :weight bold))))
`(rainbow-delimiters-depth-3-face ((t (:foreground "#b0b1a3" :weight bold))))
`(rainbow-delimiters-depth-4-face ((t (:foreground "#97b098" :weight bold))))
`(rainbow-delimiters-depth-5-face ((t (:foreground "#aebed8" :weight bold))))
`(rainbow-delimiters-depth-6-face ((t (:foreground "#b0b0b3" :weight bold))))
`(rainbow-delimiters-depth-7-face ((t (:foreground "#90a890" :weight bold))))
`(rainbow-delimiters-depth-8-face ((t (:foreground "#a2b6da" :weight bold))))
`(rainbow-delimiters-depth-9-face ((t (:foreground "#9cb6ad" :weight bold))))
`(rainbow-delimiters-mismatched-face ((t (:inherit rainbow-delimiters-unmatched-face :weight bold))))
`(rainbow-delimiters-unmatched-face ((t (:foreground "#88090B" :weight bold))))
;; Flyspell
`(flyspell-duplicate ((,class (:weight unspecified :foreground unspecified
:slant unspecified :underline ,lgray))))
`(flyspell-incorrect ((,class (:weight unspecified :foreground unspecified
:slant unspecified :underline ,sgray)))))
(custom-theme-set-variables
'monochrome
`(ansi-color-names-vector [,black ,lgray ,dgray ,sgray])))
;; Autoload for MELPA
;;;###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 'monochrome)
;; Local Variables:
;; no-byte-compile: t
;; End:
;;; monochrome-theme.el ends here