In this post I introduce a simple, effective and maintainable
structure for the
.emacs.d configuration directory.
I have a mix feeling about pre-defined Emacs configurations such are Emacs Live or Prelude. In one hand they build a nice showcase, demonstrating powerful modes and features, in the other hand they seem complex in their structure and use their own abstractions (“modules” for Prelude, “pack” for Emacs Live). That is why I still prefer to write my own configuration which I can easily fix. Of course I still dig in people configuration to get ideas. Basically I have reached the same conclusion as technomancy which stopped its Emacs Starter Kit.
In the last weeks I have redone my configuration removing El-Get, which I found too slow, in favor of MELPA. My initial switch to El-Get was because Marmalade was often down ; I didn’t experience the same issues with MELPA.
The configuration is based on package+ (the name is hard to search on
the web!) and the great use-package package. A
makefile installs the
few git submodules needed, download user-defined packages and
byte-compiles the packages. User and machines specific configurations
can be defined in the
$HOME/.eroles/login@hostname/ directory. The
auto-async-byte-compile mode ensures that Emacs Lisp files are
All packages configurations are done in a lazy way, thanks to
use-package, and organized with
orgstruct-mode in an org-like
The configuration is simple yet effective, I hope it can inspire
beginners or even advanced users for how to structure an
See my .emacs.d configuration on GitHub and happy hacking!