/atom-dark-theme-emacs

A Emacs port of the Atom Dark theme from Atom.io.

Primary LanguageEmacs Lisp

Atom Dark Theme (for Emacs)

This is a port of the Atom Dark theme from Atom.io. For comparison, please view the following:

Join the chat at https://gitter.im/whitlockjc/atom-dark-theme-emacs

Caveats

First, this is a work in progress. I am not an Emacs guru nor do I use all of the Emacs features/modes/etc. This theme attempts to give an Atom feel throughtout all of Emacs but seeing as I do not use all of Emacs, there are bound to be bugs. The following are supported:

  • Default Emacs theme faces (There were some faces that I left untouched from the Emacs defaults. I am sure these need to be ported as well but I didn't see any anomalies in my usage just yet.)
  • diff-hl
  • flx
  • guide-key
  • js2-mode (Atom seems to parse at a level that Emacs/js2-mode do not and those situations will be noticeable. Examples: number constants, regular expression contents, etc.)
  • markdown-mode _(Emacs seems to apply theming to more places in Markdown
  • minimap files and so it is not a 100% match but it felt wrong to remove the extra things just for the consistency of the port.)_
  • powerline

Installation

From Package (Melpa)

MELPA

M-x package-install RET atom-dark-theme.

Manual

Download atom-dark-theme.el to the directory ~/.emacs.d/themes/. Add this to your .emacs:

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")

You can load the theme now with:

M-x load-theme RET atom-dark

To make it the default theme add to your .emacs file:

(load-theme 'atom-dark t)

Configuration

Turn off mode specific faces

atom-dark-theme uses Face Remapping to better support theming of modes that do not provide their own theme faces. (Example: html-mode, yaml-mode, etc.) Whenever a mode like this is encountered, face remapping is used to alter the theme faces for the current buffer. For example, in yaml-mode YAML nodes used the font-lock-variable-name-face which as part of this theme renders as #c5c8c6 (inherits from default) but to better match Atom Dark Theme in Atom.io it makes sense for font-lock-variable-name-face to inherit from font-lock-keyword-face so that it renders #96CBFE.

For some, performing this customization could be confusing/annoying since in one mode a keyword might render one way and in another mode it could render another way. So to turn this off globally, just set the atom-dark-theme-force-faces-for-mode variable to anything but t. Here is an example:

(setq atom-dark-theme-force-faces-for-mode nil)

Screenshots

To keep this page from loading slowly, screenshots have their own page:

https://github.com/whitlockjc/atom-dark-theme-emacs/tree/master/screenshots/README.md