Tangotango dark emacs color theme
Par Juba le mercredi 10 février 2010, 16:54 - Emacs, Gnus - Lien permanent
UPDATE : This entry is deprecated ! Source code has been moved to Github and installation instructions have been rewritten.
I always have used the default Emacs color theme, with a white background. Recently I wanted to switch to a dark background but didn’t find a color scheme taht I’d like enough to use, so Is tarted to create one myself. In fact I started with the tango color theme on EmacsWiki, modified a bit, and added some faces to support gnus and org-mode as I use them a lot.
The result is a color theme named tangotango whose code is the following :
(defun color-theme-tangotango ()
"A color theme based on Tango Palette."
(interactive)
(color-theme-install
'(color-theme-tango
((background-color . "#2e3436")
(background-mode . dark)
(border-color . "#888a85")
(cursor-color . "#fce94f")
(foreground-color . "#eeeeec")
(mouse-color . "#8ae234"))
((help-highlight-face . underline)
(ibuffer-dired-buffer-face . font-lock-function-name-face)
(ibuffer-help-buffer-face . font-lock-comment-face)
(ibuffer-hidden-buffer-face . font-lock-warning-face)
(ibuffer-occur-match-face . font-lock-warning-face)
(ibuffer-read-only-buffer-face . font-lock-type-face)
(ibuffer-special-buffer-face . font-lock-keyword-face)
(ibuffer-title-face . font-lock-type-face))
(highlight ((t (:background "brown4" :foreground nil))))
(border ((t (:background "#888a85"))))
(fringe ((t (:background "grey10"))))
(mode-line ((t (:foreground "#bbbbbc" :background "#222222" :box (:line-width 1 :color nil :style released-button)))))
(mode-line-inactive ((t (:foreground "#bbbbbc" :background "#555753"))))
(mode-line-buffer-id ((t (:bold t :foreground "orange" :background nil))))
(region ((t (:background "dark slate blue"))))
(link ((t (:underline t :foreground "dodger blue"))))
(custom-link ((t (:inherit 'link))))
(match ((t (:bold t :background "#e9b96e" :foreground "#2e3436"))))
(tool-tips ((t (:inherit 'variable-pitch :foreground "black" :background "lightyellow"))))
(tooltip ((t (:inherit 'variable-pitch :foreground "black" :background "lightyellow"))))
(bold ((t (:bold t :underline nil :background nil))))
(italic ((t (:italic t :underline nil :background nil))))
(font-lock-builtin-face ((t (:foreground "#729fcf"))))
(font-lock-comment-face ((t (:foreground "#888a85"))))
(font-lock-constant-face ((t (:foreground "#8ae234"))))
(font-lock-doc-face ((t (:foreground "#888a85"))))
(font-lock-keyword-face ((t (:foreground "#729fcf" :bold t))))
(font-lock-string-face ((t (:foreground "#ad7fa8" :italic t))))
(font-lock-type-face ((t (:foreground "#8ae234" :bold t))))
(font-lock-variable-name-face ((t (:foreground "tomato"))))
(font-lock-warning-face ((t (:bold t :foreground "#f57900"))))
(font-lock-function-name-face ((t (:foreground "#edd400" :bold t))))
(comint-highlight-input ((t (:italic t :bold t))))
(comint-highlight-prompt ((t (:foreground "#8ae234"))))
(isearch ((t (:background "#f57900" :foreground "#2e3436"))))
(isearch-lazy-highlight-face ((t (:foreground "#2e3436" :background "#e9b96e"))))
(show-paren-match-face ((t (:foreground "#2e3436" :background "#73d216"))))
(show-paren-mismatch-face ((t (:background "#ad7fa8" :foreground "#2e3436"))))
(minibuffer-prompt ((t (:foreground "#729fcf" :bold t))))
(info-xref ((t (:foreground "#729fcf"))))
(info-xref-visited ((t (:foreground "#ad7fa8"))))
(diary-face ((t (:bold t :foreground "IndianRed"))))
(eshell-ls-clutter-face ((t (:bold t :foreground "DimGray"))))
(eshell-ls-executable-face ((t (:bold t :foreground "Coral"))))
(eshell-ls-missing-face ((t (:bold t :foreground "black"))))
(eshell-ls-special-face ((t (:bold t :foreground "Gold"))))
(eshell-ls-symlink-face ((t (:bold t :foreground "White"))))
(widget-button ((t (:bold t))))
(widget-mouse-face ((t (:bold t :foreground "white" :background "brown4"))))
(widget-field ((t (:foreground "orange" :background "gray30"))))
(widget-single-line-field ((t (:foreground "orange" :background "gray30"))))
(custom-group-tag ((t (:bold t :foreground "#edd400" :height 1.3))))
(custom-variable-tag ((t (:bold t :foreground "#edd400" :height 1.1))))
(custom-face-tag ((t (:bold t :foreground "#edd400" :height 1.1))))
(custom-state-face ((t (:foreground "#729fcf"))))
(custom-button ((t (:box (:line-width 1 :style released-button) :background "grey50" :foreground "black"))))
(custom-variable-button ((t (:inherit 'custom-button))))
(custom-button-mouse ((t (:inherit 'custom-button :background "grey60"))))
(custom-button-unraised ((t (:background "grey50" :foreground "black"))))
(custom-button-mouse-unraised ((t (:inherit 'custom-button-unraised :background "grey60"))))
(custom-button-pressed ((t (:inherit 'custom-button :box (:style pressed-button)))))
(custom-button-mouse-pressed-unraised ((t (:inherit 'custom-button-unraised :background "grey60"))))
(custom-documentation ((t (:italic t))))
(message-cited-text ((t (:foreground "#edd400"))))
(gnus-cite-face-1 ((t (:foreground "#ad7fa8"))))
(gnus-cite-face-2 ((t (:foreground "sienna4"))))
(gnus-cite-face-3 ((t (:foreground "khaki4"))))
(gnus-cite-face-4 ((t (:foreground "PaleTurquoise4"))))
(gnus-group-mail-1-empty-face ((t (:foreground "light cyan"))))
(gnus-group-mail-1-face ((t (:bold t :foreground "light cyan"))))
(gnus-group-mail-2-empty-face ((t (:foreground "turquoise"))))
(gnus-group-mail-2-face ((t (:bold t :foreground "turquoise"))))
(gnus-group-mail-3-empty-face ((t (:foreground "#729fcf"))))
(gnus-group-mail-3-face ((t (:bold t :foreground "#edd400"))))
(gnus-group-mail-low-empty-face ((t (:foreground "dodger blue"))))
(gnus-group-mail-low-face ((t (:bold t :foreground "dodger blue"))))
(gnus-group-news-1-empty-face ((t (:foreground "light cyan"))))
(gnus-group-news-1-face ((t (:bold t :foreground "light cyan"))))
(gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
(gnus-group-news-2-face ((t (:bold t :foreground "turquoise"))))
(gnus-group-news-3-empty-face ((t (:foreground "#729fcf"))))
(gnus-group-news-3-face ((t (:bold t :foreground "#edd400"))))
(gnus-group-news-low-empty-face ((t (:foreground "dodger blue"))))
(gnus-group-news-low-face ((t (:bold t :foreground "dodger blue"))))
(gnus-header-name-face ((t (:bold t :foreground "#729fcf"))))
(gnus-header-from ((t (:bold t :foreground "#edd400"))))
(gnus-header-subject ((t (:foreground "#edd400"))))
(gnus-header-content ((t (:italic t :foreground "#8ae234"))))
(gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3"))))
(gnus-signature-face ((t (:italic t :foreground "dark grey"))))
(gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
(gnus-summary-high-ancient-face ((t (:bold t :foreground "rotal blue"))))
(gnus-summary-high-read-face ((t (:bold t :foreground "lime green"))))
(gnus-summary-high-ticked-face ((t (:bold t :foreground "tomato"))))
(gnus-summary-high-unread-face ((t (:bold t :foreground "white"))))
(gnus-summary-low-ancient-face ((t (:italic t :foreground "lime green"))))
(gnus-summary-low-read-face ((t (:italic t :foreground "royal blue"))))
(gnus-summary-low-ticked-face ((t (:italic t :foreground "dark red"))))
(gnus-summary-low-unread-face ((t (:italic t :foreground "white"))))
(gnus-summary-normal-ancient-face ((t (:foreground "royal blue"))))
(gnus-summary-normal-read-face ((t (:foreground "lime green"))))
(gnus-summary-normal-ticked-face ((t (:foreground "indian red"))))
(gnus-summary-normal-unread-face ((t (:foreground "white"))))
(gnus-summary-selected ((t (:background "brown4" :foreground "white"))))
(message-header-name-face ((t (:foreground "tomato"))))
(message-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3"))))
(message-header-other-face ((t (:foreground "LightSkyBlue3"))))
(message-header-xheader-face ((t (:foreground "DodgerBlue3"))))
(message-header-subject ((t (:foreground "white"))))
(message-header-to ((t (:foreground "white"))))
(message-header-cc ((t (:foreground "white"))))
(org-hide ((t (:foreground "#2e3436"))))
(org-level-1 ((t (:bold t :foreground "dodger blue" :height 1.5))))
(org-level-2 ((t (:bold t :foreground "#6ac214" :height 1.2))))
(org-level-3 ((t (:bold t :foreground "#edd400" :height 1.1))))
(org-level-4 ((t (:bold t :foreground "tomato" :height 1.0))))
(org-date ((t (:underline t :foreground "magenta3"))))
(org-footnote ((t (:underline t :foreground "magenta3"))))
(org-link ((t (:foreground "skyblue2" :background "#2e3436"))))
(org-special-keyword ((t (:foreground "brown"))))
(org-verbatim ((t (:foreground "#eeeeec" :underline t :slant italic))))
(org-block ((t (:foreground "#bbbbbc"))))
(org-quote ((t (:inherit org-block :slant italic))))
(org-verse ((t (:inherit org-block :slant italic))))
(org-todo ((t (:bold t :foreground "Red"))))
(org-done ((t (:bold t :foreground "ForestGreen"))))
(anything-header ((t (:bold t :background "grey15" :foreground "#edd400"))))
)))
Obviously you need to install and configure the color-theme Emacs extension to use it. You will find instructions on the dedicated EmacsWiki page. The setup I use is the following :
(require 'color-theme) (color-theme-initialize) (setq color-theme-is-global t) (setq color-theme-is-cumulative t) (setq color-theme-load-all-themes nil) (color-theme-tangotango) (add-hook 'message-mode-hook 'color-theme-tangotango) (add-hook 'gnus-article-mode-hook 'color-theme-tangotango) (add-hook 'after-make-frame-functions (lambda (frame) (set-variable 'color-theme-is-global nil) (select-frame frame) (if window-system (color-theme-tangotango) (color-theme-tty-dark))))
Here is a screenshot of the color theme with an emacs-lisp file :

One with a Gnus summary and article buffers :

And one with an org-mode buffer :

Feel free to give any feedback !
Commentaires
I love it, adopted.
pas mal!
had to add
(provide 'color-theme-tangotango)
to make it work, though...
Bonjour, j'aurais aimé utiliser ton thème mais je ne parviens pas à l'installer :/
J'y suis parvenu pour tango mais pour celui-ci j'ai eu beau retourner le problème dans tous les sens, je n'ai plus d'idée.
Pourquoi est-ce qu'on ne peut pas faire de require avec celui-ci ?
J'ai une erreur : Required feature `color-theme-tangotango' was not provided
Bonjour Ced,
Est-ce que tu as utilisé le code que j'ai indiqué, ou bien tu as tout mis dans un fichier à part ?
À mon avis ça devrait passer en ajoutant le (provide 'color-theme-tangotango) indiqué dans le commentaire précédent...
Bonsoir :),
J'ai placé la fonction color-theme-tangotango() dans un fichier color-theme-tangotango.el placé dans ~/.emacs.d/themes et j'ai inséré le code qui suit dans mon fichier .emacs.el :
;; Color-theme
(add-to-list 'load-path "~/.emacs.d/themes")
(require 'color-theme)
(color-theme-initialize)
(setq color-theme-is-global t)
(setq color-theme-is-cumulative t)
(setq color-theme-load-all-themes nil)
(color-theme-tangotango)
(add-hook 'message-mode-hook 'color-theme-tangotango)
(add-hook 'gnus-article-mode-hook 'color-theme-tangotango)
(add-hook 'after-make-frame-functions
(lambda (frame)
(set-variable 'color-theme-is-global nil)
(select-frame frame)
(if window-system
(color-theme-tangotango)
(color-theme-tty-dark))))
Cependant chez moi la fonction color-theme-initialize n'existe pas donc j'ai enlevé cette ligne du coup j'ai l'erreur Symbol's function definition is void: color-theme-tangotango.
(provide 'color-theme-tangotango) c'est à la fin du fichier color-theme-tangotango que je dois le placer ?
Merci d'avance
D'abord ça ne me semble pas logique que la fonction (color-theme-initialize) ne soit pas présente. Tu as bien installé color-theme.el ?
Sinon une solution serait d'utiliser load-file à la place de require, quelque chose du genre (load-file "color-theme-tangotango.el"), en copiant le code de mon billet dans ton fichier color-theme-tangotango.el.
Et sinon encore, regarder là :
http://www.emacswiki.org/emacs/Colo...
Pfiou okay ça fonctionne bien maintenant, j'avais ajouté le dossier contenant les themes a mon loadpath mais pas celui contenant color-theme.el -.-
Merci pour tout, je suis content j'ai enfin un joli theme pour mon emacs :D.
Bonne journée
wonderful,but I noticed that I must install color-theme-tango before or it will go wrong.
So good ! I love it. So great for scripting and email ! I've to use the org-mode :D