Go to file
2017-05-13 22:42:59 +02:00
bin bin/org-tangle: set mode local var 2017-05-04 11:03:31 +02:00
core Move quickrun popup-specific config to core-popups + update rules 2017-05-13 22:42:59 +02:00
modules Move quickrun popup-specific config to core-popups + update rules 2017-05-13 22:42:59 +02:00
test feature/evil: remove :P modifier test 2017-04-16 16:50:55 -04:00
.gitignore Add .tern-port to gitignore 2017-04-08 03:43:55 -04:00
.travis.yml .travis.yml: simplify make command 2017-04-05 22:12:47 -04:00
init.example.el General refactor & cleanup 2017-05-13 00:14:17 +02:00
LICENSE Update license 2017-01-06 17:33:43 -05:00
Makefile Simplify makefile 2017-04-17 23:34:08 -04:00
README.md Update README 2017-05-13 14:42:54 +02:00
TODO.org Add new items to TODO.org 2017-05-13 13:35:56 +02:00

Main screenshot

MIT DOOM v2.0.2 Build Status

This is an Emacs configuration for a stubborn, melodramatic and shell-dwelling vimmer disappointed with the text-editor status quo.

Doom tries to look and act like modern editors (whatever that means to me on any given day), espouse vim's modal philosophy as best it can, and strive to surpass vim in any way possible. It fits my needs as a software developer, indie game developer, scientist and doom enthusiast.

It was tailored for MacOS 10.11+ and Arch Linux 4.7+, and exclusively for Emacs 25.1+. I use vim everywhere else.

Installation

git clone https://github.com/hlissner/.emacs.d ~/.emacs.d
cd ~/.emacs.d
cp init.example.el init.el  # maybe edit init.el
make install
make compile       # optional, may take a while
make compile-lite  # optional (lighter alternative to compile)

Run make after making changes, which is the equivalent of:

make install       # or (doom/packages-install)
make autoloads     # or (doom/reload-autoloads)

Deciphering my emacs.d

To get a picture of what's in here, check out:

Highlights

  • A popup management system using shackle for temporary or disposable buffers.
  • Per-project code-style settings with editorconfig.
  • Workspaces, tab emulation & session persistence with persp-mode.
  • Project and workspace-restricted 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 with evil-multiedit
    • Repeat (most) motions with SPC and shift+SPC (backwards)
    • Global C-x omnicompletion
  • Fast search utilities:
    • Project and buffer navigation with ivy
    • File browser sidebar with neotree
    • Project search (& replace) with counsel-ag (and wgrep)
    • Interactive buffer search with swiper
  • REPLs & inline/live code evaluation (using quickrun and repl-toggle) for many languages including Ruby, Python, PHP, JS, Elisp, Haskell and Lua.
  • Minimalistic diffs in the fringe with git-gutter-fringe.
  • 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, xref (experimental Emacs library) dumb-jump, ctags (WIP), then counsel-ag.
  • Snippets and file-templates with yasnippet.
  • 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)
  • Emacs as an:
    • Email client (using mu4e & offlineimap)
    • Presentation app (using org-tree-slides, ox-reveal, +present/big-mode & impatient-mode)
    • RSS feed reader (using elfeed)
    • Word Processor (using LaTeX, Org and Markdown)

Contributing or troubleshooting

My config wasn't intended for public use, but I'm happy to help you use or crib from my config. I welcome contributions of any kind; documentation, bug fixes, even elisp tips.

Don't hesitate to report bugs or tell me my Elisp-fu sucks!