3 min read

Using Spacemacs

In the past couple of months, I’ve been using and, a first for me, regularly contributing to this open source project called Spacemacs.


Spacemacs is a new distribution of Emacs. Think what Ubuntu did for GNU/Linux – Spacemacs is doing the same for GNU Emacs. It combines all the existing great pieces and providing an easy-to-use good-looking package.

I used to use my own emacs configuration and then switched to Prelude for it’s neat Clojure integration because Bozhidar Batsov wrote CIDER (the Clojure-Emacs package) as well. This was mostly helpful when I was working at Helpshift.

It all started when I was watching Sacha Chua’s Emacs Hangout video and Howard Abrams mentioned Spacemacs, and for a change, I immediately jumped into using it.

What attracted me to Spacemacs was that it was initially based on evil-mode, a full vi emulation layer inside Emacs. This was great because I was indeed having an Emacs pinky problem. And then the sane key binding hierarchy combined with guide-key for visually seeing that hierarchy was icing on the cake.

I first tweeted questioning whether it’ll be difficult to integrate the rest of Emacs ecosystem and then took it as a challenge and added a layer for ERC (IRC package in Emacs), was impressed with the layer system of Spacemacs and I was hooked. Then, I added org-pomodoro, org-present, etc.

I talked about Spacemacs at Emacs SF meetup, and I sometimes help and ask questions myself in the Gitter chatroom via the IRC bridge.

Minor annoyances led me to submit pull requests upstream – git-link, evil-org-mode, projectile, etc.

Elisp hacking has been fun.

Things that I’d like to see improved in Spacemacs:

  1. The default configuration file should be empty. Spacemacs installs a ~/.spacemacs file which is already full of stuff and this confuses new users. New users expect to just copy/paste snippets and it should just work, they will not take the time to read a large config file. For example, there is a layers config variable where users are supposed to add names of the layers they want to use, instead users should be able to copy/paste (enable-layer 'org) instead and it can work equivalently.
  2. The holy-mode should enable normal Emacs usage. For example, I cannot use meta-shift-right in OrgMode (used for indenting a heading and it’s content) in holy-mode whereas there is a key > in evil-mode. Spacemacs needs to make up its mind on whether it’ll fully support a holy-mode vanilla Emacs key bindings and I hope it does.
  3. The develop branch moves fast and many early adopters are using that whereas newbies are using the master branch, and there is often confusion in the chat room when someone asks for help. I wish there was a command in spacemacs that will generate the useful information as a text (which operating system, which emacs version, which layers are enabled, holy-mode or evil-mode, etc.) which can be pasted into the chat room and will assist others to offer advice much faster. Update: I contributed a change to make this happen, and happy to see it’s adoption, both in the chat as well as the default issue template.

It’s funny how was using XEmacs a decade ago, then dived fully into Vim (even wrote a book on it) and now I’m back into Emacs land.

On the same note, I am fascinated with newer editors like GitHub’s Atom which is gaining traction, also has a good package management system and UI using HTML/CSS which makes for easy extensibility – a hallmark of a great editor, and fascinating new possibilities such as integrating IPython/Jupyter in a Light-Table inspired way. My curiosity about Atom first piqued because Electron, the core of Atom editor is being used by the Slack desktop apps, Microsoft Visual Studio for Mac and Linux, etc.

I don’t know if / when / how I’ll make a switch to Atom, but until then I’m happy with Spacemacs.