doomemacs/README.md

186 lines
8.3 KiB
Markdown
Raw Normal View History

2019-07-15 00:57:05 +08:00
<a href="http://doomemacs.org">
<img src="https://img.shields.io/github/tag/hlissner/doom-emacs.svg?label=release&color=orange&style=for-the-badge" alt="Made with Doom Emacs">
2019-07-15 00:57:05 +08:00
</a>
<a href="https://emacs.org">
<img src="https://img.shields.io/badge/Supports-26.1_--_27.0.50-blueviolet.svg?style=for-the-badge&logo=GNU%20Emacs&logoColor=white" alt="Supports Emacs 26.x - 27.0.50">
2019-07-15 00:57:05 +08:00
</a>
2019-10-13 12:28:48 +08:00
<a href="https://github.com/hlissner/doom-emacs/actions">
2020-04-08 08:24:44 +08:00
<img src="https://github.com/hlissner/doom-emacs/workflows/CI/badge.svg" alt="Build status: develop">
2019-07-15 00:57:05 +08:00
</a>
<a href="https://discord.gg/qvGgnVx">
<img src="https://img.shields.io/badge/Discord-blue.svg?logo=discord&label=join&style=for-the-badge" alt="Join our discord server" align="right">
2019-07-15 00:57:05 +08:00
</a>
<br><br>
![Doom Emacs Screenshot](https://raw.githubusercontent.com/hlissner/doom-emacs/screenshots/main.png)
2019-10-29 13:40:55 +08:00
<p align="center">
2019-07-15 00:57:05 +08:00
<b><a href="/../../tree/screenshots">Screenshots</a></b>
|
<b><a href="docs/getting_started.org">Get started</a></b>
|
<b><a href="docs/contributing.org">Contribute</a></b>
|
<b><a href="docs/index.org">Documentation</a></b>
|
<b><a href="docs/faq.org">FAQ</a></b>
2019-10-29 13:40:55 +08:00
</p>
2019-10-13 12:04:58 +08:00
---
2016-05-31 09:19:10 +08:00
2019-07-15 00:57:05 +08:00
**Quick start**
2019-10-13 12:04:58 +08:00
1. **Install Emacs 26.1+**. 27 is recommended. _28+ is not supported_.
2. Install [ripgrep](https://github.com/BurntSushi/ripgrep) 11.0+.
3. Windows and BSD users will need GNU Find.
4. Clone Doom and run its installer:
2017-07-29 06:54:08 +08:00
```bash
git clone https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install
```
Find more detailed install instructions [in the
documentation](docs/getting_started.org#install).
2020-01-26 14:31:53 +08:00
2019-07-15 00:57:05 +08:00
**Table of Contents**
2019-10-13 12:04:58 +08:00
2019-01-03 14:15:32 +08:00
- [What is Doom Emacs](#what-is-doom-emacs)
2019-10-20 10:18:23 +08:00
- [Doom's mantras](#dooms-mantras)
- [Features](#features)
2019-01-03 14:15:32 +08:00
- [Getting Help](#getting-help)
2019-10-20 10:18:23 +08:00
- [Community](#community)
- [Troubleshooting](#troubleshooting)
- [Contributing](#contributing)
2016-05-24 08:56:19 +08:00
2019-10-13 12:04:58 +08:00
# What is Doom Emacs
2017-05-26 02:08:50 +08:00
2019-01-03 14:15:32 +08:00
<a href="http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573">
<img src="https://github.com/hlissner/doom-emacs/raw/screenshots/cacochan.png" align="right" />
</a>
2017-05-26 02:08:50 +08:00
2020-04-08 08:24:44 +08:00
It is a story as old as time. A stubborn, shell-dwelling, and melodramatic
2019-01-03 14:15:32 +08:00
vimmer -- envious of the features of modern text editors -- spirals into despair
2019-01-03 15:05:57 +08:00
before succumbing to the [dark side][url:evil-mode]. This is his config.
2019-01-03 14:15:32 +08:00
2020-01-26 14:31:53 +08:00
Doom is a configuration framework for [GNU
Emacs](https://www.gnu.org/software/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.
2019-01-03 14:15:32 +08:00
2019-10-13 12:04:58 +08:00
## Doom's mantras
2020-01-26 14:31:53 +08:00
- **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.
2019-10-20 10:18:23 +08:00
## Features
2020-01-26 14:31:53 +08:00
- Minimalistic good looks inspired by modern editors.
2020-04-08 08:24:44 +08:00
- A modular architecture that can be extended to your own configs.
- A standard library suited to simplifying your config.
2020-01-26 14:31:53 +08:00
- A declarative [package management system][doom:packages] (powered by
[straight.el][url:straight]) with a command line interface. Install packages
from anywhere, not just (M)ELPA.
2020-04-08 08:24:44 +08:00
- (Optional) Vim-emulation powered by [evil-mode][url:evil-mode], including
ports of popular vim plugins and functionality.
- Curated and sane defaults for many packages, (major) OSes, and Emacs itself.
- Support for *many* programming languages. Includes syntax highlighting,
linters/checker integration, inline code evaluation, code completion (where
possible), REPLs, documentation lookups, snippets, and more!
2019-10-20 10:18:23 +08:00
- Support for *many* tools, like docker, pass, ansible, terraform, and more.
2019-01-03 14:15:32 +08:00
- A Spacemacs-esque [keybinding scheme][doom:bindings], centered around leader
and localleader prefix keys (<kbd>SPC</kbd> and <kbd>SPC</kbd><kbd>m</kbd>, by
default).
2020-04-08 08:24:44 +08:00
- A rule-based [popup management system][doom:popups] to control how temporary
or disposable buffers are displayed (and disposed of).
2019-10-20 10:18:23 +08:00
- Automatic indentation detection and [editorconfig][url: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][url:ripgrep].
2019-10-20 10:18:23 +08:00
- Isolated and persistent workspaces (also substitutes for vim tabs).
2020-01-26 14:31:53 +08:00
- 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.
2019-10-30 22:41:10 +08:00
2019-10-20 10:18:23 +08:00
# Getting Help
2019-10-30 22:41:10 +08:00
2019-10-20 10:18:23 +08:00
## Community
We have [a Discord server][url:discord]! Hop on and say hi!
2019-10-30 22:41:10 +08:00
2019-10-20 10:18:23 +08:00
## Troubleshooting
2019-01-03 14:15:32 +08:00
2020-04-08 08:24:44 +08:00
Encountered a problem? Here are some things to try before shooting off that bug
report:
2019-01-03 14:15:32 +08:00
- Run `bin/doom sync`. This ensures Doom is properly set up and its autoloads
2019-01-03 14:15:32 +08:00
files are up-to-date.
2020-04-08 08:24:44 +08:00
- Folks who have byte-compiled their config (with `bin/doom compile`) should run
`bin/doom clean` to rule out stale bytecode. Never debug with a byte-compiled
config. It makes your job harder.
- Run `bin/doom doctor` to detect common issues in your development environment
and missing third party dependencies.
- Search [Doom's issue tracker][github:issues] in case your issue was already
reported.
2019-01-03 14:15:32 +08:00
- [Visit our FAQ][docs:faq] to see if your issue is listed.
2020-04-08 08:24:44 +08:00
If all else fails, [file that bug report][github:new-issue]! **Please do not
ignore the issue template!** It's a great help if you can [include a backtrace
with errors][docs:backtrace].
2019-01-03 14:15:32 +08:00
2019-10-20 10:18:23 +08:00
## Contributing
2017-07-29 06:54:08 +08:00
2019-01-03 14:15:32 +08:00
Doom (and my Emacs work in general) is a labor of love and incurable madness,
2019-10-20 10:18:23 +08:00
done on my spare time. If you'd like to support my work, there are many things
2020-04-08 08:24:44 +08:00
you can do to help. I welcome contributions!
2019-01-03 14:15:32 +08:00
- I love pull requests and bug reports. Check out the [Contributing
Guidelines][docs:contributing] to find out how you can help out.
2019-01-03 14:15:32 +08:00
- I welcome Elisp pointers! Don't hesitate to [tell me my Elisp-fu
sucks][github:new-issue] (but please tell me why).
- Hop on [our Discord server][url:discord] 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][url:liberapay] or [paypal][url:paypal]. Donations are a
great help. My work here contends with studies, ventures in indie gamedev, and
my freelance work.
2019-01-03 14:15:32 +08:00
2020-04-08 08:24:44 +08:00
[docs:wiki]: docs/index.org
2019-10-29 13:13:57 +08:00
[docs:wiki-quickstart]: docs/getting_started.org
[docs:wiki-modules]: docs/index.org#Module%20List
[docs:wiki-customization]: docs/getting_started.org#Customize
[docs:contributing]: docs/contributing.org
[docs:faq]: docs/faq.org
2020-04-08 08:24:44 +08:00
[docs:backtrace]: https://github.com/hlissner/doom-emacs/blob/develop/docs/getting_started.org#how-to-extract-a-backtrace-from-an-error
2019-01-03 14:15:32 +08:00
[github:new-issue]: https://github.com/hlissner/doom-emacs/issues/new
2020-04-08 08:24:44 +08:00
[github:issues]: https://github.com/hlissner/doom-emacs/issues
[doom:bindings]: modules/config/default/+evil-bindings.el
2019-01-03 14:15:32 +08:00
[doom:packages]: core/autoload/packages.el
[doom:popups]: modules/ui/popup/README.org
[url:discord]: https://discord.gg/qvGgnVx
2019-01-03 14:15:32 +08:00
[url:liberapay]: https://liberapay.com/hlissner/donate
[url:paypal]: https://paypal.me/henriklissner/10
[url:editorconfig]: http://editorconfig.org/
[url:evil-mode]: https://github.com/emacs-evil/evil
[url:ripgrep]: https://github.com/BurntSushi/ripgrep
2019-10-20 10:18:23 +08:00
[url:straight]: https://github.com/raxod502/straight.el