doomemacs/README.md

122 lines
5.1 KiB
Markdown
Raw Normal View History

2016-10-05 21:50:34 +02:00
[![Main screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true)][sc]
2015-06-14 17:26:03 +02:00
2016-10-05 21:50:34 +02:00
[![MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
2017-02-20 00:19:12 -05:00
[![DOOM v2.0.0](https://img.shields.io/badge/DOOM-v2.0.0-blue.svg)](./init.el)
2016-05-30 21:19:10 -04:00
2016-10-05 21:50:34 +02: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 17:23:11 +02:00
2016-10-05 21:50:34 +02:00
This is an Emacs configuration for a stubborn, melodramatic and
2017-02-20 12:02:57 -05:00
shell-dwelling vimmer disappointed with the text-editor status quo.
2016-05-30 21:19:10 -04:00
2017-02-20 00:19:12 -05:00
Doom tries to look and act like modern editors (whatever that means to
2017-04-05 15:55:43 -04:00
me on any given day), espouse vim's modal philosophy as best it can and strive
to surpass vim in any way possible, and generally fit my needs as a software
2017-02-20 00:19:12 -05:00
developer, indie game developer, scientist and doom enthusiast.
2016-08-21 17:23:11 +02:00
2017-02-20 00:19:12 -05:00
It was tailored for **MacOS 10.11+** and **Arch Linux 4.7+**, and
2017-02-20 12:02:57 -05:00
**exclusively** for Emacs 25.1+. I use [vim] everywhere else.
2016-05-23 20:56:19 -04:00
2015-06-14 17:26:03 +02:00
## Installation
2016-10-05 21:50:34 +02:00
```bash
2016-04-05 23:53:38 -04:00
git clone https://github.com/hlissner/.emacs.d ~/.emacs.d
2015-06-14 17:26:03 +02:00
cd ~/.emacs.d
2017-02-20 00:19:12 -05:00
cp init.example.el init.el # maybe edit init.el
make install
make compile # optional, may take a while
2017-04-05 15:55:43 -04:00
make compile-lite # optional (lighter alternative to compile)
2016-02-26 09:30:41 -05:00
```
2016-01-23 20:38:12 -05:00
2017-04-05 15:55:43 -04:00
Run `make` after making changes, which is the equivalent of:
2016-10-05 21:50:34 +02:00
2017-02-20 12:02:57 -05:00
```bash
make install # or (doom/packages-install)
make autoloads # or (doom/reload-autoloads)
```
2016-05-30 21:19:10 -04:00
2017-02-20 00:19:12 -05:00
## Deciphering my emacs.d
2015-06-14 17:26:03 +02:00
2016-01-23 20:38:12 -05:00
To get a picture of what's in here, check out:
2015-12-12 03:18:14 -05:00
2017-02-20 12:02:57 -05:00
* **[init.example.el](init.example.el)**: what my loadout looks like.
2017-02-20 00:19:12 -05: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-20 12:02:57 -05: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 00:19:12 -05: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 17:23:11 +02:00
* Repeat (most) motions with <kbd>SPC</kbd> and
2016-10-05 21:50:34 +02:00
<kbd>shift</kbd>+<kbd>SPC</kbd> (backwards)
2017-02-20 00:19:12 -05:00
* Global <kbd>C-x</kbd> omnicompletion
2016-08-21 17:23:11 +02:00
* Fast search utilities:
* Project and buffer navigation with **[ivy]**
* File browser sidebar with **[neotree]**
2017-02-20 00:19:12 -05:00
* Project search (& replace) with **[counsel-ag]** (and **[wgrep]**)
* Interactive buffer search with **[swiper]**
2017-02-20 12:02:57 -05: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 17:23:11 +02:00
* [Minimalistic diffs in the fringe][sc-diffs] with **[git-gutter-fringe]**.
2017-02-20 00:19:12 -05: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
2017-03-16 14:28:26 -04:00
major-mode commands, xref (experimental Emacs library)
**[dumb-jump]**, ctags (WIP), then **[counsel-ag]**.
2017-02-20 00:19:12 -05:00
* Snippets and file-templates with **[yasnippet]**.
2017-02-20 12:02:57 -05: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 00:19:12 -05:00
## Contributing or troubleshooting
2017-02-20 12:02:57 -05: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 09:00:34 +02:00
2017-02-20 12:02:57 -05: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 09:00:34 +02:00
2016-10-05 21:50:34 +02: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 17:23:11 +02:00
[dumb-jump]: https://melpa.org/#/dumb-jump
[evil-mode]: https://melpa.org/#/evil
2016-08-21 17:23:11 +02: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 17:23:11 +02:00
[swiper]: https://melpa.org/#/swiper
[wgrep]: https://melpa.org/#/wgrep
2017-02-20 12:02:57 -05:00
[persp-mode]: https://melpa.org/#/persp-mode
2016-08-21 17:23:11 +02:00
[yasnippet]: https://melpa.org/#/yasnippet
2016-06-07 02:21:50 -04:00
2016-08-21 17:23:11 +02: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-21 20:36:54 +02:00
[vim]: https://github.com/hlissner/.vim
2016-10-05 21:50:34 +02:00
[doom-theme]: https://github.com/hlissner/emacs-doom-theme