Doom Emacs is a configuration for GNU Emacs written by a stubborn, shell-dwelling, and melodramatic ex-vimmer. It is designed to be a foundation for your own Emacs configuration or a resource for enthusiasts to learn more about our favorite OS.
Github fails to render org links to sub-sections, so it is recommended that you view the documentation from within Doom Emacs by pressing
<help> d h
(<help>
isSPC h
for evil users andC-h
for vanilla users) or searching it with<help> d /
.
- Install - How to install Emacs, Doom and its plugins
- Update - Keep Doom and its packages up-to-date
- Customize - A primer on customizing and reconfiguring Doom
- Troubleshoot - How to debug Emacs & Doom, find help or look up documentation
- General
- Configuration
- Defaults
- Common Issues
- Contributing
- Where to get help
- Writing an effective bug report
- Suggesting features, keybinds or enhancements
- Contributing code
- Contributing documentation
- Other ways to support Doom Emacs
- Special thanks
- Development roadmap - A timeline outlining what’s being worked on and when it is expected to be done.
- Plugins under review - A sitrep on third party plugins that we’ve considered, rejected, or awaiting integration into Doom.
- Upstream bugs - Tracks issues originating from plugins and external programs that Doom relies on.
- Doom Emacs
- Emacs & Emacs Lisp
- The Official Emacs manual
- A variety of Emacs resources - https://github.com/ema2159/awesome-emacs
- Quick crash courses on Emacs Lisp’s syntax for programmers:
- Workflows for customizing Emacs and its packages (and its C/C++ modes):
- Tools in Emacs
- Vim & Evil
Application modules are complex and opinionated modules that transform Emacs
toward a specific purpose. They may have additional dependencies and should be
loaded last, before :config
modules.
- calendar - TODO
- irc - how neckbeards socialize
- rss
+org
- an RSS client in Emacs - twitter - A twitter client for Emacs
- write
+wordnut +langtool
- Transforms emacs into an IDE for writers, and for writing fiction, notes, papers and so on.
Modules that provide new interfaces or frameworks for completion, including code completion.
- company
+childframe +tng
- The ultimate code completion backend - helm
+fuzzy +childframe
- Another search engine for love and life - ido - The other other search engine for love and life
- ivy
+fuzzy +prescient +childframe
- The search engine for love and life
Modules that configure Emacs one way or another, or focus on making it easier for you to customize it yourself. It is best to load these last.
- literate - For users with literate configs. This will tangle+compile a
config.org in your
doom-private-dir
when it changes. - default
+bindings +smartparens
- The default module sets reasonable defaults for Emacs. It also provides a Spacemacs-inspired keybinding scheme and a smartparens config. Use it as a reference for your own modules.
Modules that affect and augment your ability to manipulate or insert text.
- evil
+everywhere
- transforms Emacs into Vim - file-templates - Auto-inserted templates in blank new files
- fold - universal code folding
- format
+onsave
- TODO - god - run Emacs commands without modifier keys
- lispy - TODO
- multiple-cursors - TODO
- objed - TODO
- parinfer - TODO
- rotate-text - TODO
- snippets - Snippet expansion for lazy typists
- word-wrap - soft wrapping with language-aware indent
Modules that reconfigure or augment packages or features built into Emacs.
- mu4e
+gmail
- TODO - notmuch - TODO
- wanderlust
+gmail
- TODO
Modules that bring support for a language or group of languages to Emacs.
- agda - TODO
- assembly - TODO
- cc
+lsp
- TODO - clojure - TODO
- common-lisp - TODO
- coq - TODO
- crystal - TODO
- csharp - TODO
- data - TODO
- elixir
+lsp
- TODO - elm - TODO
- emacs-lisp - TODO
- erlang - TODO
- ess - TODO
- faust - TODO
- fsharp - TODO
- go
+lsp
- TODO - haskell
+dante +intero +lsp
- TODO - hy - TODO
- idris - TODO
- java
+meghanada +lsp
- TODO - javascript
+lsp
- JavaScript, TypeScript, and CoffeeScript support - julia - TODO
- kotlin
+lsp+
- TODO - latex - TODO
- lean - TODO
- ledger - TODO
- lua
+moonscript
- TODO - markdown
+grip
- TODO - nim - TODO
- nix - TODO
- ocaml
+lsp
- TODO - org
+brain +dragndrop +gnuplot +hugo +ipython +journal +jupyter +pandoc +pomodoro +present
- TODO - perl - TODO
- php
+lsp
- TODO - plantuml - TODO
- purescript - TODO
- python
+lsp +pyenv +conda
- TODO - qt - TODO
- racket - TODO
- rest - TODO
- ruby
+lsp +rvm +rbenv
- TODO - rust
+lsp
- TODO - scala
+lsp
- TODO - scheme - TODO
- sh
+fish +lsp
- TODO - solidity - TODO
- swift
+lsp
- TODO - terra - TODO
- web
+lsp
- HTML and CSS (SCSS/SASS/LESS/Stylus) support.
Modules that offer terminal emulation.
- eshell - TODO
- shell - TODO
- term - TODO
- vterm - TODO
Small modules that give Emacs access to external tools & services.
- ansible - TODO
- debugger - A (nigh-)universal debugger in Emacs
- direnv - TODO
- docker - TODO
- editorconfig - TODO
- ein - TODO
- eval
+overlay
- REPL & code evaluation support for a variety of languages - flycheck - Live error/warning highlights
- flyspell
+everywhere
- Spell checking - gist - TODO
- lookup
+dictionary +docsets
- Universal jump-to & documentation lookup backend - lsp - TODO
- macos - TODO
- magit - TODO
- make - TODO
- pass - TODO
- pdf - TODO
- prodigy - TODO
- rgb - TODO
- terraform
- tmux - TODO
- upload - TODO
Aesthetic modules that affect the Emacs interface or user experience.
- deft - TODO
- doom - TODO
- doom-dashboard - TODO
- doom-quit - TODO
- fill-column - TODO
- hl-todo - TODO
- hydra - TODO
- indent-guides - TODO
- modeline - TODO
- nav-flash - TODO
- neotree - TODO
- ophints - TODO
- popup
+all +defaults
- Makes temporary/disposable windows less intrusive - pretty-code - TODO
- tabs - TODO
- treemacs - TODO
- unicode - TODO
- vc-gutter - TODO
- vi-tilde-fringe - TODO
- window-select
+switch-window +numbers
- TODO - workspaces - Isolated workspaces
- zen - Distraction-free coding (or writing)