Spacemacs

I’ve been using Emacs as my primary text editor for a few years now. Emacs is arguably the most customizable and programmable text editor in existence due to the unique design of writing the editor in elisp with dynamic binding. This is a mixed blessing though because this design also makes the editor extremely difficult to configure. To get Emacs customized in a way that’s usable you have to know at least a small amount of elisp. Your configuration files are source code, and it’s easy for that source code to get rather complicated. There are tons of amazing Emacs packages written by people available in package repositories like MELPA but understanding the huge number of packages and how to configure them all can be daunting. For most of the time that I’ve been using Emacs my configuration files for it have been an incomprehensible collection of elisp that has mostly been cribbed from various dark corners of the internet which I barely understood.

Earlier this year I discovered Spacemacs which is an amazing project by Sylvain Benner. Spacemacs provides an opinionated approach to how Emacs should be set up and configured that works really well out of the box. Instead of customizing Emacs with elisp, most Spacemacs customization can be done by listing the desired configuration files in a ~/.spacemacs file. The provided configuration layers are all set up to work well and give you the best features by default. If you do want to go outside of the defaults it’s easy to customize the layers, and the configuration layer system provides a sensible way to write structured code. The project is also updated regularly and there’s a healthy number of contributors. There have been some other projects similar to this like Prelude but I’ve found Spacemacs to be easier to understand, easier set up by default, and the project generally seems more active and healthier.

After discovering Spacemacs I was able to completely scrap all of my old Emacs configs. My entire editor is configured now with 20 lines in my .spacemacs file that specify which configuration layers I want and override a few things. I don’t need a ~/.emacs file and I’ve written zero lines of the code in my ~/.emacs.d directory. If you’re an Emacs user and you aren’t using Spacemacs I encourage you to check it out. In fact, Spacemacs actually has an amazing system built around evil-mode so you might want to check it out anyway even if you’re not already an Emacs user.