* develop: (173 commits) v2.0.6 bump Add zunit file template & file extension Remove +workspace/cleanup (doom/cleanup-buffers is better) Remove org/org dependency on doom-themes General refactor & docstring updates Revert "Preload modules before compiling #219" Fix 'variable reference to nil’ compiler warning Fix markdown specific keybindings being added to global map Fix bad doom/other-popup alias breaking which-key #223 Preload modules before compiling #219 Popup library: minor refactor & appease byte-compiler Fix compile error caused by defunct keybinding #219 Remove org/org-notebook Add org unit tests to init.test.el Add unit test file template Fix modeline duplication in buffer-file-name :help-echo org/org: new command +org/remove-link, bound to C-c C-S-l org/org: add tests for +org/insert-item Add test helper macros to test.el lib +org/insert-item: fix one-too-many prepended newlines in 1st-level headers ... |
||
---|---|---|
bin | ||
core | ||
modules | ||
.gitignore | ||
.travis.yml | ||
CHANGELOG.org | ||
init.example.el | ||
init.test.el | ||
LICENSE | ||
Makefile | ||
README.md |
Wiki | Screenshots | Troubleshooting | FAQ | Changelog

It is a story as old as time. A stubborn, shell-dwelling, and melodramatic vimmer -- envious of the features of modern text editors -- spirals into despair before he finally succumbs to the dark side. This is his config.
DOOM's philosophy is simple: be fast, be readable, and be pretty. It is tailored for neckbeards with a blue-belt or better in command-line-fu who don't shy away from dabbling with Elisp.
Rip and tear. Until it compiles.
Important: Doom only supports Emacs >= 25.1, and is tailored for Arch Linux 4.7+ and Mac OS 10.11+.
Quick start
git clone https://github.com/hlissner/doom-emacs ~/.emacs.d
cd ~/.emacs.d
cp init.example.el init.el # maybe edit init.el
make install
Visit the wiki for a more detailed guide on installing, customizing and grokking Doom.
Feature highlights
- A fast, organized and opinionated Emacs configuration with a command line interface.
- A custom, declarative package management system that combines package.el, use-package and quelpa. This lets you install packages from sources other than ELPA, as well as manage packages from the command line.
- A popup management system (powered by shackle) that minimizes the presence and footprint of temporary and/or disposable buffers.
- A vim-like experience with evil-mode, including ports for several vim plugins, C-x omnicompletion and a slew of custom ex commands.
- Integration with editorconfig. Let someone else argue about tabs and spaces (spaces, duh).
- Code completion for a variety of languages, powered by company-mode (there may be other dependencies for certain languages).
- Project-awareness powered by projectile, with tools to navigate and manage projects and project files.
- Fast project search (and replace) utilities, powered by the_silver_searcher, ripgrep and wgrep, with ivy (the default), helm and ido integration.
- Isolated and persistent workspaces powered by persp-mode. This can substitute for vim tabs.
- Inline/live code evaluation (using quickrun), including REPLs for a variety of languages.
Troubleshooting
Found a problem? Here are some things to try:
- Make sure all plugins are installed with
make install
. - A
void-function
orvoid-variable
might signal an out-of-date autoloads file. Update it withmake autoloads
. - Diagnose common OS/environment issues that could interfere with Emacs with
make doctor
. - If you byte-compiled Doom, run
make clean
orM-x doom/clean-compiled-files
and restart Emacs. Never debug byte-compiled code, it will interfere with your efforts in subtle (and not-so-subtle) ways. - Check the FAQ to see if your issue is mentioned.
- If your issue is associated with a particular module, like code-completion, check the module's README.org, if any.
If all else fails, file a bug report.
Contribute
Doom (and my Emacs work in general) is a labor of love and incurable madness, done on my free time. It wasn't intended for public use, but I enjoy making Doom a resource for others.
If you'd like to support my efforts, I welcome contributions of any kind:
- I love pull requests and bug reports, and elisp pointers are especially welcome. Seriously, don't hesitate to tell me my Elisp-fu sucks!
- I'm happy to discuss Emacs workflow, ideas or tooling. If you think I, Doom or other Emacs users could benefit from them (or you just want to chat), drop me a line at henrik@lissner.net. I'm eager to learn.