Go to file
2017-05-25 20:09:36 +02:00
bin bin/doctor: add timeout for TLS test 2017-05-25 17:10:49 +02:00
core Refactor +evil-esc-hook 2017-05-25 12:22:05 +02:00
modules lang/haskell: refactor + add company-ghc 2017-05-25 20:09:36 +02:00
test Add unit-test init.el 2017-05-19 23:52:37 +02:00
.gitignore
.travis.yml Fix .travis.yml + add INSECURE envvar 2017-05-19 23:49:07 +02:00
init.example.el Added elixir lang support 2017-05-24 15:00:52 +03:00
LICENSE
Makefile Add bin/doctor to diagnose environment issues 2017-05-20 18:40:13 +02:00
README.md Update READMEs & add new ones 2017-05-25 20:09:12 +02:00
TODO.org Update READMEs & add new ones 2017-05-25 20:09:12 +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 Emacs 25.1+ on MacOS 10.11+ and Arch Linux 4.7+. 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

# DOOM is designed to benefit from byte compilation, it can boost startup time
# and make Emacs feel a bit snappier, but it is OPTIONAL.
make compile       # may take a while
# or
make compile-lite  # lighter alternative to compile

# If you have problems, run this to check for common issues with your setup
make doctor

If you byte-compile, changes to the config will not take effect until you recompile or delete the byte-compiled files (with make clean).

Package Management

Plugins can be managed from the command line with make:

make install     # install missing plugins
make update      # update installed plugins
make autoremove  # remove unused plugins
# be sure to run install and autoremove after modifying init.el

# run this if you change autoload files
make autoloads

# you can run any make command with DEBUG=1 for extra logging, and YES=1 to
# auto-accept confirmation prompts:
DEBUG=1 make install
YES=1 make update

These can also be invoked from within emacs:

  • doom/packages-install
  • doom/packages-update
  • doom/packages-autoremove
  • doom/reload-autoloads

Deciphering my emacs.d

So you want to grok some of this madness. Here are a few suggestions:

Highlights

  • A popup window management system using shackle to minimize mental context switching while dealing with temporary or disposable buffers.
  • Per-project code-style settings with editorconfig. Let someone else argue about tabs versus spaces (spaces > tabs, btw).
  • Workspaces & session persistence with persp-mode. This provides tab emulation that vaguely resembles vim tabs.
  • Project & workspace-aware buffer navigation and functions.
  • A vim-centric environment with evil-mode
  • Fast search utilities:
  • Inline/live code evaluation (using quickrun) and REPLs for a variety of languages, including Ruby, Python, PHP, JS, Elisp, Haskell, Lua and more.
  • 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)

Troubleshooting

My config wasn't intended for public use, but I'm happy to help you use or crib from my config.

  • If you have questions, drop me line at henrik@lissner.net.
  • If you have issues running or setting up my Emacs config, use make doctor to help diagnose the issue before you report an issue.
  • If you still can't make sense of it, run DEBUG=1 make doctor and include it with your bug report.

And please include steps to reproduce your issue, if possible.

Contributing

I welcome contributions of any kind; documentation, bug fixes/reports, extra modules, even elisp tips. Really, don't hesitate to tell me my Elisp-fu sucks!