Spacemacs

TL;DR Spacemacs is a great set of configurations for Emacs that doesn’t tie with most of it’s decisions. I don’t force anyone to use Spacemacs, but believe, it really worth just trying.

Using Emacs doesn’t mean the same thing as when we talk about using Xcode or IntelliJ IDEA, because extending and transforming Emacs is extremely important part of it’s usage flow. And in my opinion this is a good thing as it allows you to deeply understand your editor, to make it a better fit for your needs and it let’s you discover new functionality and new approaches.

I believe that almost every Emacs newbie heard at least once in his life pretty innocent advice - just work on your own configurations in order to master Emacs. It can’t be over-appreciated. But on the other hand I do understand people not willing to spend too much time on writing Emacs Lisp while the other work must be done in time. Writing configurations comes with price, for some people the price is just too high. That’s why I always advice people to take a look at some ‘starter kits’ like Steve Purcell emacs.d, Prelude and Spacemacs. They make it so much easier to start using Emacs without needless pain and confusion and with a joy. And most importantly, they help to solve the riddle of configuration organisation.

When I just started using Emacs I didn’t know how I want to organise my configurations. There are so many ways of doing this. There are so many different approaches for installing and configuring third-party packages. And I didn’t know which of them will suit me the best. So I started experimenting. Somehow I missed Steve Purcell emacs.d, but still realised that Prelude and literate init.org are not my preferred solutions. I tried some pieces of advice given by Xah, but again - not my thing. And then I found emacs.d shared by Chris Done. And thanks to his configurations I really dived into Emacs world.

My typical flow on extending Emacs included searching for new packages, looking into great snippets, trying others approaches on solving my problems etc. Pretty fast it became tedious, because you have to dig others settings and a lot of code just gets copied all over again. Some packages can be configured in many ways, but usually they have one great set of configurations that is flowing from one emacs.d to another with only minor changes. There are best practices after all.

And then someone mentioned Spacemacs. Out of curiosity I decided to give it a try. Spacemacs is an Emacs distribution that tries to take the best of two worlds - Emacs and Vim. It’s main focuses are ergonomics, mnemonics and consistency. The project was started by Sylvain Benner and already has more than 370 contributions. Spacemacs currently is the top rated Emacs Lisp project on GitHub.

Features

Spacemacs has a lot of features. Some of them are obviously great, while others are debatable. After all, everything depends on the end users preferences. I’ll try to cover features I think are the most important. Be they good or bad. Or even neither.

First of all, Spacemacs is just a bunch of configurations for Emacs written in Emacs Lisp. This comes with all advantages and disadvantages of Emacs with it’s Lisp. But the main point - Emacs is configurable. This feature is deep in Emacs philosophy.

Secondly, Spacemacs is a bunch of very good and well thought configurations that provide incredible out of box experience. Like it or not, but Spacemacs brings a lot of new users to Emacs community. In my opinion this is great.

Thirdly, Spacemacs has really mnemonic, ergonomic and consistent key bindings. I know many people that were inspired by key bindings in Spacemacs. You just have to try it.

One of the greatest advantages of Spacemacs is it’s architecture which provides non-hacky, easy and transparent ways of hooking into things you’d like to change. But most importantly - in the heart of Spacemacs architecture are configuration layers. They group package configurations into semantic units which can be easily toggled on or off. Layers system eases dependency management across hundreds of packages.

Another important aspect of Spacemacs is that it combines best from two worlds - Emacs and Vim. But don’t be mistaken - it’s not only about modal editing as it can be easily disabled (hooray). Spacemacs is build on Emacs as a platform and took the best parts of Vim UI.

Also in Spacemacs almost everything is loaded lazily, so Emacs starts pretty fast (usually around 2 seconds, depending on your configurations). Long startup is not a big deal in Emacs world, because usually we use only one instance of Emacs for a long time. But in some cases it becomes useful to have very short startup time. This point can be viewed as disadvantage, because for vim users even 2 seconds is pretty slow. But again, this is Emacs, it’s used differently.

The other advantage of Spacemacs is it’s look and feel. I know that for some people (especially with Atom existing beside the corner) it’s important to have good looking editor. Spacemacs gives it for those who wants it. But it’s Emacs, so you are free to disable most of bells and whistles.

What you also might like is Spacemacs documentation. It’s not ideal but it’s above average for sure. Spacemacs documentation covers not only Spacemacs, but some aspects of Emacs and specific modes.

Besides, Spacemacs has very good community. At least in my understand of what good community is.

Spacemacs has not only advantages, but some disadvantages as well. For example, while it has great out of box experience it still requires some knowledge of Emacs or Vim. But on other hand, Spacemacs tries it’s best to be friendly even in such cases. The only requirement is to be patient. And be able to read documentation.

Another point that might be seemed as disadvantage is that Spacemacs grown huge. While community tries hard, there are still more than 800 open issues and more than open 150 PRs at the time of writing this article. But on other side there is nothing to fear for two reasons. First of all, important things are merged, included pretty fast. Secondly, Spacemacs provides good ways of adding or changing any functionality. So as long as you have sources - you are free person.

Also it worth mentioning that sometimes Spacemacs has some very strange and frustrating issues that no one wants to fix. And when you hit them it’s up to you to fix them or at least just to find solution. But to be fair - that happens very rarely and usually it’s not really Spacemacs-related.

Conclusion

Spacemacs is a huge project that already has many users and makes an impact on Emacs community overall. With some very good decisions and great out of box configurations it became very popular not only among users, but among ‘regular’ Emacs users as Spacemacs has a lot of things to steal and learn for. My advice - just give it a try. Personal experience is the most important thing.

As a side note, I don’t use evil part of Spacemacs. I am one of those few Emacs editing style users. And I am very happy about it. If you are interested in my configurations, take a look at this repository.

P. S. This is updated version of my old intro post for Spacemacs that I’ve posted on <2015-05-04>. So at this point, I use Spacemacs for more than one year.


Posted on June 6, 2016 by Boris Buliga

Source: Spacemacs