Latest Posts

Guides and updates for the Doom ecosystem. Start with Getting Started, Features, or the FAQ if you are new.

Getting Started with Doom Emacs

Doom Emacs can feel overwhelming at first glance — but it does not have to be. This guide walks you through the essentials: installing Doom, understanding the three config files, and building muscle memory for the keybindings you will reach for every single day.

Why Doom?

Doom takes the immense power of GNU Emacs and wraps it in sane defaults, a declarative module system, and a command-line interface that keeps everything in sync. Cold startup clocks in at roughly 0.4 seconds — fast enough to rival any modern editor. The learning curve is real, but the payoff is an environment that grows with you instead of against you.

The Three Files You Need to Know

init.el controls which modules are active. Toggle languages, completion frameworks, and tools by uncommenting a single line. packages.el is where you declare extra packages from MELPA or remote sources. config.el holds your personal Elisp — keybindings, theme tweaks, hooks, and everything that makes Doom yours.

First Steps After Install

Run doom sync after every config change. Use doom doctor when something feels off. Press SPC inside Doom and wait — the which-key popup reveals every available command. Master SPC f f (find file), SPC b b (switch buffer), and SPC s p (search project) and you are already productive.

For the full learning path, visit the Getting Started page.

Top 10 Modules You Should Enable

Doom ships with over 150 modules, but you do not need all of them. Here are the ten that deliver the highest impact for the lowest configuration effort — the modules that make Doom feel like a superpower.

  1. verticoA vertical completion UI that makes fuzzy finding files, buffers, and commands feel instant. Pairs naturally with orderless and consult.
  2. evilDoom was designed around evil-mode. Vim motions, text objects, and macros — all inside Emacs.
  3. magitWidely considered the best Git interface in any editor. Stage, commit, rebase, and cherry-pick without touching the terminal.
  4. lspOpt-in Language Server Protocol support. Diagnostics, completion, go-to-definition, and code actions for every major language.
  5. orgNotes, task management, literate programming, and export to PDF, HTML, or LaTeX. The killer app of Emacs.
  6. treemacsAn advanced sidebar file explorer with project-aware navigation and Git status indicators.
  7. snippetsYasnippet templates let you expand short triggers into full boilerplate. Doom bundles hundreds of snippets out of the box.
  8. vtermA fully-featured terminal emulator inside Emacs. Run builds, tests, and REPLs without switching windows.
  9. formatAuto-format on save via apheleia. Supports Prettier, Black, rustfmt, gofmt, and dozens more formatters.
  10. workspacesPer-project workspaces that remember your window layout, open buffers, and cursor positions. Context-switch without losing your place.

Browse the full catalog on the Modules page, or explore language-specific setups in the language modules.

What’s New in V3.0

Doom Emacs V3.0 is the biggest release in the project’s history. Here are the highlights that matter most for your daily workflow.

Rewritten Module System

Doom V3 introduces a fully declarative module resolver. Dependency chains are resolved at sync time, not runtime, which shaves another 15–20% off cold startup. Module flags (+lsp, +tree-sitter) now compose cleanly without hidden ordering bugs.

Native Treesitter Everywhere

Every language module that supports treesitter now ships with grammar auto-installation. Enable the +tree-sitter flag and Doom handles the rest — no manual grammar compilation, no path hacks.

First-Class Eglot Support

Alongside lsp-mode, Doom V3 adds native eglot integration as a lightweight alternative. Choose your LSP client per language or globally with a single flag toggle.

Improved CLI

The doom CLI is faster, more informative, and now supports doom profile for managing multiple configurations. Profile switching lets you maintain separate setups for work, personal, and experimental configs without cloning the repo twice.

AI Tooling Modules

New community modules for Copilot, gptel (ChatGPT/Claude), and aider bring AI pair programming directly into Doom. Enable them in your init.el under :tools.

For the full changelog and upgrade instructions, run doom upgrade or consult the official Doom Emacs repository documentation.