doom-emacs

An Emacs configuration for the stubborn martian vimmer

Github星跟踪图

Doom Emacs Screenshot


Quick start

git clone https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install

More details, including dependencies and how to install Emacs, can be found in
the documentation
.

Table of Contents

What is Doom Emacs

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 succumbing to the dark side. This is his config.

Doom is a configuration framework for GNU
Emacs
tailored for Emacs bankruptcy
veterans who want less framework in their frameworks and the performance of a
hand rolled config (or better). It can be a foundation for your own config or a
resource for Emacs enthusiasts to learn more about our favorite OS.

Doom's mantras

  • Gotta go fast. Startup and run-time performance are priorities. Doom goes
    beyond lazy loading packages by modifying them to be snappier and load lazier!
  • Close to metal. There's less between you and vanilla Emacs by design.
    There's less to grok, on top of Emacs.
  • Readability counts. Internals ought to be written as if reading them were
    part of the user experience, and it is! Modules should be syntactically sweet.
    Backend logic should be functional (as much as elisp permits), abstraction
    light and (hopefully) documented.
  • Opinionated, but not stubborn. Doom is a bundle of reasonable defaults and
    curated opinions, but all of it should be optional. Use as little or as much
    of it as you like.
  • Your system, your rules. There are more ways to set up your development
    environment than there are dislikes on Youtube Rewind '18, so Doom leaves it
    to you. Doom will not automatically install system dependencies (and will
    coerce its plugins not to do so either). Use doom doctor to figure out
    what's missing.

Features

  • Minimalistic good looks inspired by modern editors.
  • A modular architecture for a more organized Emacs configuration.
  • A custom elisp library to help simplify your config.
  • (Optional) Vim-emulation powered by evil-mode, including
    ports of popular vim plugins and functionality.
  • A declarative package management system (powered by
    straight.el) with a command line interface. Install packages
    from anywhere, not just (M)ELPA.
  • A curated set of sane defaults for all packages, all (major) OSes, and Emacs
    itself.
  • Support for many programming languages. Too many to list. Includes syntax
    highlighting, linters/checker integration, inline code evaluation, code
    completion (where possible), REPLs, documentation lookups, snippets, and more!
  • Support for many tools, like docker, pass, ansible, terraform, and more.
  • A Spacemacs-esque keybinding scheme, centered around leader
    and localleader prefix keys (SPC and SPCm, by
    default).
  • A rule-based popup management system that dictates how
    temporary or disposable buffers are displayed (and disposed of).
  • Automatic indentation detection and editorconfig
    integration. Let someone else argue about tabs vs _*spaces*_.
  • Project-management tools and framework-specific minor modes with their own
    snippets libraries.
  • Project search (and replace) utilities, powered by ripgrep.
  • Isolated and persistent workspaces (also substitutes for vim tabs).
  • An envvar file generator that captures a snapshot of your shell environment
    for Doom to load at startup. No more struggling to get Emacs to inherit your
    PATH, among other things.

Getting Help

Community

We have a Discord server! Hop on and say hi!

Troubleshooting

Encountered strange behavior or an error? Here are some things to try before you
shoot off that bug report:

  • Run bin/doom refresh. This ensures Doom is properly set up and its autoloads
    files are up-to-date.
  • If you have byte-compiled your config (with bin/doom compile), see if
    bin/doom clean makes the issue go away. Never debug issues with a
    byte-compiled config, it will make your job harder.
  • Run bin/doom doctor to detect common issues in your development environment.
  • Search Doom's issue tracker for mention of any error messages you've received.
  • Visit our FAQ to see if your issue is listed.

If all else fails, file that bug report! Please include the
behavior you've observed, the behavior you expected, and any error messages or
warnings logged to the *Messages* buffer (can be opened with SPC h
e or M-x view-echo-area-messages).

It's a great help if you included a backtrace with errors, i.e. M-x toggle-debug-on-error then recreating the error(s).

Contributing

Doom (and my Emacs work in general) is a labor of love and incurable madness,
done on my spare time. If you'd like to support my work, there are many things
you can do to help; I welcome any contribution!

  • I love pull requests and bug reports. Check out the Contributing
    Guidelines
    to find out how you can help out.
  • I welcome Elisp pointers! Don't hesitate to tell me my Elisp-fu
    sucks
    (but please tell me why).
  • Hop on our Discord server and say hi! Help others out, hang out
    or talk to me about Emacs, or gamedev, or programming, machine learning,
    physics, pixel art, anime, gaming -- anything you like. Nourish this lonely
    soul!
  • If you'd like to support my work financially, consider buying me a drink
    through liberapay or paypal. Donations are a
    great help. My work here contends with studies, ventures in indie gamedev, and
    my freelance work.

主要指标

概览
名称与所有者doomemacs/doomemacs
主编程语言Emacs Lisp
编程语言Emacs Lisp (语言数: 11)
平台
许可证MIT License
所有者活动
创建于2014-07-12 09:29:52
推送于2025-06-14 10:01:29
最后一次提交2025-06-11 13:59:20
发布数14
最新版本名称v2.0.9 (发布于 )
第一版名称v0.7 (发布于 2015-12-11 20:58:10)
用户参与
星数20.6k
关注者数232
派生数3.1k
提交数20k
已启用问题?
问题数4663
打开的问题数614
拉请求数2142
打开的拉请求数43
关闭的拉请求数1067
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?