[![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.
[![Yay! Evil!](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/cacochan.png)](http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573)

It is tailored to OSX 10.11+, Emacs 25+ and my needs as a software developer, designer, scientist and doom enthusiast. ![Splash page screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/scratch.png?raw=true) ![Main screenshots](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true) ## Installation ```bash # Install cask + emacs brew install cask brew tap railwaycat/emacsmacport brew install emacs-mac --with-imagemagick --with-modern-icon --HEAD # Install this emacs.d git clone https://github.com/hlissner/.emacs.d ~/.emacs.d cd ~/.emacs.d make # installs plugins via cask and generates autoloads # Optional make compile # compiles core and autoloaded files make snippets # install hlissner/emacs-snippets into private/snippets ``` For a more comprehensive byte compile, run `:bc!` (`:bc` will compile the current *.el file). ## Features To get a picture of what's in here, check out: * **[The Caskfile](Cask)**: lists installed plugins and where they're configured. * **[init.el](init.el)**: lists all loaded modules * **[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 * **[ext/Makefile](ext/Makefile)**: lists external dependencies ### Highlights * Line numbers + highlight with **[nlinum]**
* Syntax checking with **[flycheck]**
* Completion with **[company-mode]**
* Nigh-universal code debugging interface with **[realgud]** * Project navigation with **[ivy]** and **[neotree]** * Project search with **[counsel-ag]** * Buffer search with **evil-search** and **[swiper]** * Session persistence (and tab emulation) with **[workgroups2]** * Run code inline with **[quickrun]** * REPLs for many major modes with **[repl-toggle]**, including Ruby, Python, PHP, JS, Elisp, Haskell and Lua. * Minimalistic diffs in the margin with **[git-gutter-fringe]** * Snippet expansion with **[yasnippet]** and **[auto-yasnippet]** * File template support with **auto-insert** and **[yasnippet]** * Code folding with **hideshow** * Custom O/S interaction commands, like **os-reveal** and **os-open-in-browser** * Custom TODO, FIXME and NOTE highlighting * **big-mode** for presentations and demonstrations * Tmux integration with `:t` and `:tcd` ex commands * Tamed popup windows with **[shackle]** * emacs for modern note-taking/LaTeX/writing with **org-mode** or **rst-mode** * Vim-esque Emacs with **[evil-mode]**, plus: * 2-char motions with **[evil-snipe]** * Repeat (most) motions with SPC * Multiple cursors with **[evil-multiedit]** * Quick keybindings with `:[nviom]map` * Vim-esque omnicompletion. e.g. `C-x C-f` for files * Pretty mode-line with **[spaceline]**, plus: * evil-search/iedit/evil-substitute mode-line integration * Indicator when macro is recording
* Show python/ruby version in mode-line (with rbenv/pyenv) [nlinum]: http://elpa.gnu.org/packages/nlinum.html [flycheck]: https://melpa.org/#/flycheck [company-mode]: https://melpa.org/#/company [realgud]: https://melpa.org/#/realgud [ivy]: https://melpa.org/#/ivy [git-gutter-fringe]: https://melpa.org/#/git-gutter-fringe [neotree]: https://melpa.org/#/neotree [counsel-ag]: https://melpa.org/#/counsel [swiper]: https://melpa.org/#/swiper [evil-mode]: https://melpa.org/#/evil [workgroups2]: https://melpa.org/#/workgroups2 [quickrun]: https://melpa.org/#/quickrun [repl-toggle]: https://melpa.org/#/repl-toggle [yasnippet]: https://melpa.org/#/yasnippet [auto-yasnippet]: https://melpa.org/#/auto-yasnippet [shackle]: https://melpa.org/#/shackle [evil-snipe]: https://melpa.org/#/evil-snipe [evil-multiedit]: https://melpa.org/#/evil-multiedit [spaceline]: https://melpa.org/#/spaceline ## More screenshots In the [screenshots branch](https://github.com/hlissner/.emacs.d/tree/screenshots).