doomemacs/README.md

179 lines
8.0 KiB
Markdown
Raw Normal View History

2019-07-15 00:57:05 +08:00
<a href="http://doomemacs.org">
2019-10-20 10:18:23 +08:00
<img src="https://img.shields.io/github/tag/hlissner/doom-emacs.svg?label=release&color=orange" 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/Made_for-Emacs_26.1+-blueviolet.svg" alt="Made for Emacs 26.1+">
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">
2019-10-13 12:04:58 +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/bcZ6P3y">
2019-10-20 10:18:23 +08:00
<img src="https://img.shields.io/badge/Discord-blue.svg?logo=discord&label=join" 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
2019-01-03 14:15:32 +08:00
```bash
git clone https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install
2019-01-03 14:15:32 +08:00
```
2017-07-29 06:54:08 +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
2019-01-03 14:15:32 +08:00
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
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
2019-10-20 10:18:23 +08:00
Doom is a configuration for [GNU Emacs](https://www.gnu.org/software/emacs/)
designed to make Emacs faster and easier to customize. It can serve as framework
for your own configuration or a resource for fellow Emacs enthusiasts who want
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
2019-10-20 10:18:23 +08:00
- **Gotta go fast.** Startup and run-time performance are high priorities.
2019-10-25 02:20:48 +08:00
Expensive functionality (built-in or in plugins) is modified and optimized
toward this end, otherwise, they must be opt-in.
2019-10-20 10:18:23 +08:00
- **Close to metal.** There's less between you and vanilla Emacs, by design.
There's less to grok. Modules should be syntactically sweet and backend logic
explicit and abstraction-light. The code itself ought to be designed as if
2019-10-25 02:20:48 +08:00
grokking it were part of the user experience; and it is!
2019-10-20 10:18:23 +08:00
- **Opinionated, but not stubborn.** Doom is a bundle of reasonable defaults
and curated opinions, but you aren't stuck with it. Use as little or as much
of it as you like. Use it as-is as a complete Emacs distribution; disable
everything and use it as a baseline for your own; or anywhere in between.
2019-10-25 02:20:48 +08:00
- **Your system, your rules.** There are more ways to set up your programming
environment than there are dislikes on Youtube Rewind '18, so Doom and its
plugins promise not to *automatically* (and definitely not *silently*) install
system dependencies. This means fonts, packages and programs. `doom doctor`
will tell you what's missing though!
2019-10-20 10:18:23 +08:00
## Features
- 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.
- Minimalistic good looks inspired by modern editors.
- A modular architecture for a more organized Emacs configuration.
- A custom elisp library to help you simplify your config.
- 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.
- Vim-emulation powered by [evil-mode][url:evil-mode], including ports of
popular vim plugins and functionality.
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).
2019-10-20 10:18:23 +08:00
- A rule-based [popup management system][doom:popups] that dictates how
temporary or disposable buffers are displayed (and disposed of).
- 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.
2019-01-03 14:15:32 +08:00
- Project search (and replace) utilities, powered by
2019-10-20 10:18:23 +08:00
[the_silver_searcher][url:the_silver_searcher] or [ripgrep][url:ripgrep].
- Isolated and persistent workspaces (also substitutes for vim tabs).
- An environment variables file generator and loader, so that Emacs can
2019-10-30 22:41:10 +08:00
perfectly inherit your shell configuration.
2019-10-20 10:18:23 +08:00
- Everything is optional!
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
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.
2019-01-03 14:15:32 +08:00
- 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][docs:faq] to see if your issue is listed.
If all else fails, [file that bug report][github:new-issue]! Please include the
2019-10-20 10:18:23 +08:00
behavior you've observed, the behavior you expected, and any error messages or
warnings logged to the \*Messages\* buffer (can be opened with <kbd>SPC h
e</kbd> or `M-x view-echo-area-messages`).
2019-10-20 10:18:23 +08:00
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).
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
you can do to help; I welcome any contribution!
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
[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
2019-01-03 14:15:32 +08:00
[github:new-issue]: https://github.com/hlissner/doom-emacs/issues/new
[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
2019-01-03 14:15:32 +08:00
[url:discord]: https://discord.gg/bcZ6P3y
[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
[url:the_silver_searcher]: https://github.com/ggreer/the_silver_searcher
2019-10-20 10:18:23 +08:00
[url:straight]: https://github.com/raxod502/straight.el