doomemacs/README.md

121 lines
5.0 KiB
Markdown
Raw Normal View History

2016-10-06 03:50:34 +08:00
[![Main screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true)][sc]
2015-06-14 23:26:03 +08:00
2016-10-06 03:50:34 +08:00
[![MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
2017-02-20 13:19:12 +08:00
[![DOOM v2.0.0](https://img.shields.io/badge/DOOM-v2.0.0-blue.svg)](./init.el)
2016-05-31 09:19:10 +08:00
2016-10-06 03:50:34 +08:00
<a href="http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573">
<img src="https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/cacochan.png" align="right" />
</a>
2016-08-21 23:23:11 +08:00
2016-10-06 03:50:34 +08:00
This is an Emacs configuration for a stubborn, melodramatic and
2017-02-21 01:02:57 +08:00
shell-dwelling vimmer disappointed with the text-editor status quo.
2016-05-31 09:19:10 +08:00
2017-02-20 13:19:12 +08:00
Doom tries to look and act like modern editors (whatever that means to
me on any given day), emulate vim as best it can and strive to surpass
it in any way possible. I've designed it to fit my needs as a software
developer, indie game developer, scientist and doom enthusiast.
2016-08-21 23:23:11 +08:00
2017-02-20 13:19:12 +08:00
It was tailored for **MacOS 10.11+** and **Arch Linux 4.7+**, and
2017-02-21 01:02:57 +08:00
**exclusively** for Emacs 25.1+. I use [vim] everywhere else.
2016-05-24 08:56:19 +08:00
2015-06-14 23:26:03 +08:00
## Installation
2016-10-06 03:50:34 +08:00
```bash
2016-04-06 11:53:38 +08:00
git clone https://github.com/hlissner/.emacs.d ~/.emacs.d
2015-06-14 23:26:03 +08:00
cd ~/.emacs.d
2017-02-20 13:19:12 +08:00
cp init.example.el init.el # maybe edit init.el
make install
make compile # optional, may take a while
2016-02-26 22:30:41 +08:00
```
2016-01-24 09:38:12 +08:00
2017-02-21 05:07:49 +08:00
Run `make` each time you change init.el (and recompile, if necessary).
Running `make` is the equivalent of doing:
2016-10-06 03:50:34 +08:00
2017-02-21 01:02:57 +08:00
```bash
make install # or (doom/packages-install)
make autoloads # or (doom/reload-autoloads)
```
2016-05-31 09:19:10 +08:00
2017-02-20 13:19:12 +08:00
## Deciphering my emacs.d
2015-06-14 23:26:03 +08:00
2016-01-24 09:38:12 +08:00
To get a picture of what's in here, check out:
2015-12-12 16:18:14 +08:00
2017-02-21 01:02:57 +08:00
* **[init.example.el](init.example.el)**: what my loadout looks like.
2017-02-20 13:19:12 +08:00
* **[modules/README.md](modules/README.md)**: a primer into module
structure and how the module system works.
* **[modules/private/hlissner/+bindings.el](modules/private/hlissner/+bindings.el)**:
my custom keybinds.
* **[modules/private/hlissner/+commands.el](modules/private/hlissner/+commands.el)**:
my custom ex commands.
* **[modules/ui](modules/ui)**: the modules that makes my Emacs look
2017-02-21 01:02:57 +08:00
the way it does, including [my theme][doom-theme], modeline,
dashboard and more.
+ Find screenshots in the [screenshots branch][sc].
### Highlights
* A [popup management system](core/core-popups.el) using **[shackle]**
for temporary or disposable buffers.
* Workspaces, tab emulation & session persistence with
**[persp-mode]**.
* Project and workspace-restricted buffer navigation and functions.
2017-02-20 13:19:12 +08:00
* A vim-centric environment with **[evil-mode]**
* 2-character motions (ala vim-seek/vim-sneak) with **[evil-snipe]**
* Sublime Text-esque [multiple cursors][sc-multiedit] with
**[evil-multiedit]**
2016-08-21 23:23:11 +08:00
* Repeat (most) motions with <kbd>SPC</kbd> and
2016-10-06 03:50:34 +08:00
<kbd>shift</kbd>+<kbd>SPC</kbd> (backwards)
2017-02-20 13:19:12 +08:00
* Global <kbd>C-x</kbd> omnicompletion
2016-08-21 23:23:11 +08:00
* Fast search utilities:
* Project and buffer navigation with **[ivy]**
* File browser sidebar with **[neotree]**
2017-02-20 13:19:12 +08:00
* Project search (& replace) with **[counsel-ag]** (and **[wgrep]**)
* Interactive buffer search with **[swiper]**
2017-02-21 01:02:57 +08:00
* REPLs & inline/live code evaluation (using **[quickrun]** and
**[repl-toggle]**) for many languages including Ruby, Python, PHP,
JS, Elisp, Haskell and Lua.
2016-08-21 23:23:11 +08:00
* [Minimalistic diffs in the fringe][sc-diffs] with **[git-gutter-fringe]**.
2017-02-20 13:19:12 +08:00
* A do-what-I-mean jump-to-definition implementation that tries its
darnest to find the definition of what you're looking at. It tries
major-mode commands, **[dumb-jump]**, ctags, then **[counsel-ag]**.
* Snippets and file-templates with **[yasnippet]**.
2017-02-21 01:02:57 +08:00
* A smarter, perdier, Atom-inspired mode-line that includes:
* evil-search/iedit/evil-substitute mode-line integration
* Macro-recording indicator
* Python/ruby version in mode-line (for rbenv/pyenv)
2017-02-20 13:19:12 +08:00
## Contributing or troubleshooting
2017-02-21 01:02:57 +08:00
My config wasn't intended for public use, but I'm happy to help you
use or crib from my config and I welcome contributions of any kind;
documentation, bug fixes or even elisp tips.
2016-09-09 15:00:34 +08:00
2017-02-21 01:02:57 +08:00
[Don't hesitate to report bugs or tell me my Elisp-fu sucks](https://github.com/hlissner/.emacs.d/issues/new)!
2016-09-09 15:00:34 +08:00
2016-10-06 03:50:34 +08:00
[yay-evil]: http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573
[Cask]: https://github.com/cask/cask
[company-mode]: https://melpa.org/#/company
[counsel-ag]: https://melpa.org/#/counsel
2016-08-21 23:23:11 +08:00
[dumb-jump]: https://melpa.org/#/dumb-jump
[evil-mode]: https://melpa.org/#/evil
2016-08-21 23:23:11 +08:00
[evil-multiedit]: https://melpa.org/#/evil-multiedit
[evil-snipe]: https://melpa.org/#/evil-snipe
[git-gutter-fringe]: https://melpa.org/#/git-gutter-fringe
[ivy]: https://melpa.org/#/ivy
[neotree]: https://melpa.org/#/neotree
[quickrun]: https://melpa.org/#/quickrun
[repl-toggle]: https://melpa.org/#/repl-toggle
[shackle]: https://melpa.org/#/shackle
2016-08-21 23:23:11 +08:00
[swiper]: https://melpa.org/#/swiper
[wgrep]: https://melpa.org/#/wgrep
2017-02-21 01:02:57 +08:00
[persp-mode]: https://melpa.org/#/persp-mode
2016-08-21 23:23:11 +08:00
[yasnippet]: https://melpa.org/#/yasnippet
2016-06-07 14:21:50 +08:00
2016-08-21 23:23:11 +08:00
[sc]: https://github.com/hlissner/.emacs.d/tree/screenshots
[sc-diffs]: https://github.com/hlissner/.emacs.d/blob/screenshots/git-gutter.png?raw=true
[sc-multiedit]: https://raw.githubusercontent.com/hlissner/evil-multiedit/screenshots/main.gif?raw=true
2016-08-22 02:36:54 +08:00
[vim]: https://github.com/hlissner/.vim
2016-10-06 03:50:34 +08:00
[doom-theme]: https://github.com/hlissner/emacs-doom-theme