0425724571
+ Fix #446, where the .local/packages.el cache was generated with a faulty load-path. + Entries in the doom-modules hash table are now plists, containing :flags and :path, at least. + Add doom-initialize-modules for loading module config.el files. + Add doom-module-get for accessing this plist, e.g. (doom-module-get :some module) ; returns plist (doom-module-get :some module :flags) ; return specific property + Replace doom-module-enable with doom-module-set, e.g. (doom-module-set :some module :flags '(+a +b +c)) + Remove doom-module-flags (use doom-module-get instead) + Rename doom-module-enabled-p with doom-module-p + Replace doom-module-path with doom-module-find-path and doom-module-expand-file. The former will search for an existing module or file in doom-modules-dirs. The latter will expand the path from whatever path is stored in doom-modules. + Replace doom-module-paths with doom-module-load-path + Changed doom! to allow for nested doom! calls by delaying the loading of module config.el files until as late as possible. + Refactor doom-initialize-packages to only ihitialize package state (i.e. doom-packages, package-alist, and quelpa-cache), rather than its previous behavior of loading all Doom files (and sometimes all module files). This is faster and more predictable. |
||
---|---|---|
.github | ||
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 finally succumbing to the dark side. This is his config.
Doom strives to be fast, fabulous and hacker friendly. It is tailored for neckbeards with blue belts or better in command-line-fu, Elisp and git.
Doom only supports Emacs >= 25.1, and is tested on Arch Linux 4.7+ and MacOS 10.11. YMMV on other platforms.
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
Don't forget to run make
every time you modify init.el!
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, allowing you to manage packages from the command line and install packages from sources other than ELPA.
- 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 many languages, powered by company-mode (some languages may have external dependencies).
- Project-awareness powered by projectile, with tools and an API to navigate and manage projects and their files.
- Fast project search (and replace) utilities, powered by the_silver_searcher, ripgrep and wgrep, with integration for ivy (the default), helm and ido.
- Isolated and persistent workspaces powered by persp-mode. Also substitutes 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:
- Run
make install
to ensure all plugins are installed. void-function
orvoid-variable
errors could signal an out-of-date autoloads file. Runmake autoloads
orM-x doom//reload-autoloads
to update it.- Scan for common OS/environment issues with
make doctor
. - Never debug byte-compiled code. It will interfere in subtle ways. Clean up
*.elc files with
make clean
orM-x doom//clean-byte-compiled-files
. - Check the FAQ to see if your issue is mentioned.
- Check the relevant module's README.org, if one exists. There may be extra steps to getting certain features to work.
If all else has failed, file a bug report.
Contribute
Doom (and my Emacs work in general) is a labor of love and incurable madness, done on my spare 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. Elisp pointers are especially welcome. Seriously, don't hesitate to tell me my Elisp-fu sucks!
- Talk to me about Emacs workflow, ideas or tooling. Or talk to me about gamedev, or pixel art, or anime, or programming, or the weather, or band camp. Whatever. I don't mind. Holler at henrik@lissner.net.