Rewrite README

This commit is contained in:
Henrik Lissner 2016-08-21 17:23:11 +02:00
parent bbc5493809
commit 58f45a418b

136
README.md
View file

@ -1,19 +1,24 @@
[![MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) [![MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
This is an Emacs configuration for stubborn vimmers and silent demon
annihilating protagonists alike. It strives to emulate vim as best it can, and
surpass it in any way possible.
<center>
[![Yay! Evil!](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/cacochan.png)](http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573) [![Yay! Evil!](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/cacochan.png)](http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573)
</center>
<br />
It is tailored to OSX 10.11+, Emacs 25+ and my needs as a software developer, This is an Emacs configuration for the stubborn, melodramatic, shell-dwelling
vimmer disappointed with the text-editor status quo. I wanted Atom's (or
Sublime's) snappy and [quasi]-native GUI, but more low-level customizability. I
wanted vim/emac's versality and modal philosophy, but didn't want to live in the
70's (or deal with VimL's shenanigans). I wanted the toybox IDE behemoths like
Intellij give you, but not the opinionated workflows that come with them.
I ended up with DOOM. It strives to look and act like modern editors (whatever
that will mean to me on any given day), emulate vim as best it can, and strive
to surpass it in any way possible. All to fit my needs as a software developer,
designer, scientist and doom enthusiast. designer, scientist and doom enthusiast.
![Splash page screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/scratch.png?raw=true) It was tailored for Emacs 25+ on OSX 10.11+. I use vim everywhere else.
![Main screenshots](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true)
![Main screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true)
**NOTE:** you can [find the theme in a separate repo](https://github.com/hlissner/emacs-doom-theme).
## Installation ## Installation
@ -44,63 +49,82 @@ To get a picture of what's in here, check out:
* **[init.el](init.el)**: lists all loaded modules * **[init.el](init.el)**: lists all loaded modules
* **[private/my-bindings.el](private/my-bindings.el)**: most of the custom keybinds * **[private/my-bindings.el](private/my-bindings.el)**: most of the custom keybinds
* **[private/my-commands.el](private/my-commands.el)**: available custom ex commands * **[private/my-commands.el](private/my-commands.el)**: available custom ex commands
* **[ext/Makefile](ext/Makefile)**: lists external dependencies * **[ext/*.sh](ext/)**: scripts for external dependency setup (e.g. irony-mode)
See screenshots in the [screenshots branch][sc].
### Highlights ### Highlights
* Line numbers + highlight with **[nlinum]** <br /> * Tamed popup windows with **[shackle]**; see `def-popup!` and `shackle-rules`.
* Syntax checking with **[flycheck]** <br /> e.g. help buffers will always pop up at the bottom of the frame, and are
* Completion with **[company-mode]** <br /> removed with ESC.
* Nigh-universal code debugging interface with **[realgud]** * Workspaces & session persistence with **[workgroups2]**
* Project navigation with **[ivy]** and **[neotree]** * Project and workspace-sensitive buffer navigation and functions
* Project search with **[counsel-ag]** * A vim-like environment with **[evil-mode]**
* Buffer search with **evil-search** and **[swiper]** * vim-seek/vim-sneak functionality with **[evil-snipe]** (provides 2-char motions)
* Session persistence (and tab emulation) with **[workgroups2]** * [Multiple cursors][sc-multiedit] with **[evil-multiedit]**
* Run code inline with **[quickrun]** * Repeat (most) motions with <kbd>SPC</kbd> and
* REPLs for many major modes with **[repl-toggle]**, including Ruby, Python, PHP, <kbd>shift</kbd>+<kbd>SPC</kbd>
JS, Elisp, Haskell and Lua. * On-the-fly keybindings with `:[nviom]map`
* Minimalistic diffs in the margin with **[git-gutter-fringe]** * Global <kbd>C-x</kbd> omnicompletion (e.g. <kbd>C-x</kbd>+<kbd>C-f</kbd> for
* Snippet expansion with **[yasnippet]** and **[auto-yasnippet]** files)
* File template support with **auto-insert** and **[yasnippet]** * Fast search utilities:
* Code folding with **hideshow** * Project and buffer navigation with **[ivy]**
* Custom O/S interaction commands, like **os-reveal** and **os-open-in-browser** * File browser sidebar with **[neotree]**
* Custom TODO, FIXME and NOTE highlighting * Project search (and replace) with **[counsel-ag]** and **[wgrep]**
* **big-mode** for presentations and demonstrations * Buffer search with **[swiper]**
* Tmux integration with `:t` and `:tcd` ex commands * REPLs for many languages including Ruby, Python, PHP, JS, Elisp, Haskell and
* Tamed popup windows with **[shackle]** Lua.
* emacs for modern note-taking/LaTeX/writing with **org-mode** or **rst-mode** * [Minimalistic diffs in the fringe][sc-diffs] with **[git-gutter-fringe]**.
* Vim-esque Emacs with **[evil-mode]**, plus: * Modded **org-mode** to be a modern note-taking/LaTeX/word-processing platform. (WIP)
* 2-char motions with **[evil-snipe]** * Code debugging interface with **[realgud]** (currently supports gdb, trepanjs,
* Repeat (most) motions with <kbd>SPC</kbd> bashdb and zshdb, working on Python/Ruby support)
* Multiple cursors with **[evil-multiedit]** * A do-what-I-mean jump-to-definition implementation that either uses major-mode
* Quick keybindings with `:[nviom]map` commands or falls back to **[dumb-jump]**/ctags.
* Vim-esque omnicompletion. e.g. `C-x C-f` for files
* Pretty mode-line with **[spaceline]**, plus: * Pretty mode-line with **[spaceline]**, plus:
* evil-search/iedit/evil-substitute mode-line integration * evil-search/iedit/evil-substitute mode-line integration
* Indicator when macro is recording<br/> * Indicator when macro is recording<br/>
* Show python/ruby version in mode-line (with rbenv/pyenv) * Show python/ruby version in mode-line (with rbenv/pyenv)
[nlinum]: http://elpa.gnu.org/packages/nlinum.html ### Other features
[flycheck]: https://melpa.org/#/flycheck
[company-mode]: https://melpa.org/#/company * Line numbers + highlight with **[nlinum]**
[realgud]: https://melpa.org/#/realgud * On-demand [platform agnostic] shell with **eshell**
[ivy]: https://melpa.org/#/ivy * Consistent marker-based code-folding with **hideshow**
[git-gutter-fringe]: https://melpa.org/#/git-gutter-fringe * Inline code execution anywhere (once or live) with **[quickrun]**
[neotree]: https://melpa.org/#/neotree * Snippet expansion and file templates with **[yasnippet]**
[counsel-ag]: https://melpa.org/#/counsel * Completion with **[company-mode]**
[swiper]: https://melpa.org/#/swiper * Syntax checking with **[flycheck]**
[evil-mode]: https://melpa.org/#/evil * Custom O/S interaction commands, like **os-reveal** and **os-open-in-browser**
[workgroups2]: https://melpa.org/#/workgroups2 * Custom TODO, FIXME and NOTE highlighting and search
[quickrun]: https://melpa.org/#/quickrun * **big-mode** for presentations and demonstrations
[repl-toggle]: https://melpa.org/#/repl-toggle * Tmux integration with `:t` and `:tcd` ex commands
[yasnippet]: https://melpa.org/#/yasnippet
[auto-yasnippet]: https://melpa.org/#/auto-yasnippet [auto-yasnippet]: https://melpa.org/#/auto-yasnippet
[shackle]: https://melpa.org/#/shackle [company-mode]: https://melpa.org/#/company
[evil-snipe]: https://melpa.org/#/evil-snipe [counsel-ag]: https://melpa.org/#/counsel
[dumb-jump]: https://melpa.org/#/dumb-jump
[evil-mode]: https://melpa.org/#/evil
[evil-multiedit]: https://melpa.org/#/evil-multiedit [evil-multiedit]: https://melpa.org/#/evil-multiedit
[evil-snipe]: https://melpa.org/#/evil-snipe
[flycheck]: https://melpa.org/#/flycheck
[git-gutter-fringe]: https://melpa.org/#/git-gutter-fringe
[ivy]: https://melpa.org/#/ivy
[neotree]: https://melpa.org/#/neotree
[nlinum]: http://elpa.gnu.org/packages/nlinum.html
[quickrun]: https://melpa.org/#/quickrun
[realgud]: https://melpa.org/#/realgud
[repl-toggle]: https://melpa.org/#/repl-toggle
[shackle]: https://melpa.org/#/shackle
[spaceline]: https://melpa.org/#/spaceline [spaceline]: https://melpa.org/#/spaceline
[swiper]: https://melpa.org/#/swiper
[workgroups2]: https://melpa.org/#/workgroups2
[wgrep]: https://melpa.org/#/wgrep
[yasnippet]: https://melpa.org/#/yasnippet
## More screenshots [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
In the [screenshots branch](https://github.com/hlissner/.emacs.d/tree/screenshots).