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.