doomemacs/README.md
2017-02-20 00:26:48 -05:00

6.0 KiB

Main screenshot

MIT DOOM v2.0.0

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

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.

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.

NOTE: you can find the theme in a separate repo.

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

If you change the module list in init.el, you'll need to refresh autoloads and, if necessary, recompile:

  • make autoloads or (doom/reload-autoloads)
  • If you byte-compiled: make compile or (doom/byte-compile)

Deciphering my emacs.d

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

Features

  • Strong support for a large selection of languages, including REPLs and inline/live code evaluation.
  • A consistent popup management system 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 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) 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, 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:
    • evil-search/iedit/evil-substitute mode-line integration
    • Macro-recording indicator
    • Python/ruby version in mode-line (for rbenv/pyenv)

Contributing or troubleshooting

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!

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.