2016-10-05 21:50:34 +02:00
|
|
|
[][sc]
|
2015-06-14 17:26:03 +02:00
|
|
|
|
2016-10-05 21:50:34 +02:00
|
|
|
[](./LICENSE)
|
2017-02-20 00:19:12 -05:00
|
|
|
[](./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 00:19:12 -05:00
|
|
|
shell-dwelling vimmer disappointed with the text-editor statsu 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
|
|
|
|
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 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
|
|
|
|
exclusively for Emacs 25.1+ **(NOTE: Older versions of Emacs won't
|
|
|
|
work).**. I use [vim] everywhere else.
|
2016-08-21 17:23:11 +02:00
|
|
|
|
2016-10-05 21:50:34 +02:00
|
|
|
**NOTE:** you can [find the theme in a separate repo][doom-theme].
|
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
|
2016-02-26 09:30:41 -05:00
|
|
|
```
|
2016-01-23 20:38:12 -05:00
|
|
|
|
2017-02-20 00:19:12 -05:00
|
|
|
If you change the module list in `init.el`, you'll need to refresh
|
|
|
|
autoloads and, if necessary, recompile:
|
2016-10-05 21:50:34 +02:00
|
|
|
|
2017-02-20 00:19:12 -05:00
|
|
|
+ `make autoloads` or `(doom/reload-autoloads)`
|
|
|
|
+ If you byte-compiled: `make compile` or `(doom/byte-compile)`
|
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 00:19:12 -05:00
|
|
|
* **[init.example.el](init.example.el)**: what my init.el looks like.
|
|
|
|
Copy this to `init.el` and you're set.
|
|
|
|
* **[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
|
|
|
|
the way it does, including my modeline, dashboard and more.
|
|
|
|
+ See screenshots in the [screenshots branch][sc].
|
|
|
|
+ Some modules have README's.
|
|
|
|
|
|
|
|
### Features
|
|
|
|
|
|
|
|
* Strong support for a [large selection of languages](modules/lang),
|
|
|
|
including REPLs and inline/live code evaluation.
|
|
|
|
* A [consistent popup management system](core/core-popups.el) using
|
|
|
|
**[shackle]** for temporary or disposable buffers. e.g. help buffers
|
|
|
|
will always pop up at the bottom of the frame, and are removed with
|
|
|
|
ESC.
|
|
|
|
* Workspaces, tab emulation and session persistence with
|
|
|
|
**[workgroups2]**.
|
|
|
|
* Project and workspace-sensitive buffer navigation and functions.
|
|
|
|
* 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]**
|
|
|
|
* REPLs & inline/live code evaluation (using **[quickrun]**) 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
|
|
|
|
major-mode commands, **[dumb-jump]**, ctags, then **[counsel-ag]**.
|
|
|
|
* Snippets and file-templates with **[yasnippet]**.
|
|
|
|
* Hybrid completion with both **[company-mode]** and
|
|
|
|
**[auto-complete]**. They collaborate to give you the completion
|
|
|
|
system most appropriate for the current major mode.
|
|
|
|
* A modern interface inspired by Atom's, with a smarter, perdier
|
|
|
|
mode-line that includes:
|
2016-06-07 02:20:50 -04:00
|
|
|
* evil-search/iedit/evil-substitute mode-line integration
|
2016-08-28 23:02:13 +02:00
|
|
|
* Macro-recording indicator
|
|
|
|
* Python/ruby version in mode-line (for rbenv/pyenv)
|
2016-06-07 02:20:50 -04:00
|
|
|
|
2017-02-20 00:19:12 -05:00
|
|
|
## Contributing or troubleshooting
|
2016-06-07 02:20:50 -04:00
|
|
|
|
2017-02-20 00:19:12 -05:00
|
|
|
My config wasn't designed with anyone else's use in mind, but I'm all
|
|
|
|
for improving it in any way possible. [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
|
|
|
|
2017-02-20 00:19:12 -05:00
|
|
|
If you'd like to help, I'd be happy to accept any sort of
|
|
|
|
contributions, whether that be modules, extra documentation, bug fixes
|
|
|
|
or even elisp tips. I don't mind any opportunity to learn more about
|
|
|
|
Emacs.
|
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
|
|
|
|
[Homebrew]: http://brew.sh
|
|
|
|
|
2016-08-21 17:23:11 +02:00
|
|
|
[auto-yasnippet]: https://melpa.org/#/auto-yasnippet
|
2016-06-07 02:20:50 -04:00
|
|
|
[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
|
2016-06-07 02:20:50 -04:00
|
|
|
[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
|
|
|
|
[flycheck]: https://melpa.org/#/flycheck
|
|
|
|
[git-gutter-fringe]: https://melpa.org/#/git-gutter-fringe
|
2016-10-05 21:50:34 +02:00
|
|
|
[irony-mode]: https://github.com/Sarcasm/irony-mode
|
2016-08-21 17:23:11 +02:00
|
|
|
[ivy]: https://melpa.org/#/ivy
|
|
|
|
[neotree]: https://melpa.org/#/neotree
|
|
|
|
[nlinum]: http://elpa.gnu.org/packages/nlinum.html
|
2016-06-07 02:20:50 -04:00
|
|
|
[quickrun]: https://melpa.org/#/quickrun
|
2016-10-05 21:50:34 +02:00
|
|
|
[racer]: https://github.com/phildawes/racer
|
2016-08-21 17:23:11 +02:00
|
|
|
[realgud]: https://melpa.org/#/realgud
|
2016-06-07 02:20:50 -04:00
|
|
|
[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
|
2016-10-05 21:50:34 +02:00
|
|
|
[workgroups2]: https://melpa.org/#/workgroups2
|
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
|