It was about a year ago. My life was good. I had things in order (mostly). And most importantly: I had an editor I liked. VSCode and I had been going steady for about a year. With its excellent support for Python and JS—which was most of my work in those days—I rarely ever needed to venture into new territory. It felt good. I was happy.
I was happy!
Then it all came crashing down. A good friend and I decided to hang out and program one Saturday. The sky was a clear blue, the temperature high, and summer was just around the corner. We got into his office, sat down, and started setting up. That’s when it happened. Completely out of left field:
— So I found this cool thing the other day. It’s called Spacemacs.
— Yeah, it’s Emacs, but with “evil mode”. So you can get your Vim bindings!
It’s true. I had been seduced into the deep, dark depths of Vim about a year prior, and had never found my way out. Never tried, really. I had let it consume me, and there was no way I’d let it go. Not for the world. Of course I had been using the VSCode Vim plugin, but while it had given me most of the functionality I wanted, I did sometimes find myself longing for something more. So I thought I ought to at least give this Spacemacs thing a go.
With one eyebrow slightly cocked, I went ahead and downloaded Spacemacs. I had tried to run Emacs previously, but had been met with that sheer, white light that comes as the default, and had been unable to figure out how to even close the program without resorting to my mouse. Naturally, I was skeptical.
So I launch it, resist the white light as I choose ‘evil mode’ and watch the window turn dark. The logo appears. It says it’s loading. Fetching packages. Eventually, the words “Spacemacs is ready” appear at the bottom of the window. I get it up and running and do some basic programming. I don’t know what it is, but something just feels … good. I spend the rest of the day with Spacemacs, and when the time comes, I don’t want to let it go. I go home, dreaming of what I’ll do to it. VSCode is nowhere to be found.
That weekend, neither Emacs nor I left my apartment. We were consumed in the fiery throes of passion and configuration, and when the sun rose the following Monday, I knew my heart had been turned.
In truth, it would be another few weeks before I left VSCode completely and migrated to Emacs even at work, but it was coming. Oh, it was coming. To this day, I still stay faithful to Emacs for most of my endeavors, only venturing out when there is something I can’t find proper support for (and even then, it’s just a matter of time before I take matters into my own hands!).
What I love about it
- The extensibility
- The fact that you can make it do pretty much whatever you want to is nothing short of amazing. I have never seen an editor this powerful and versatile.
- It’s the ‘self-documenting editor’
- Everything in Emacs is documented. You ever wonder what a key does?
C-h k <key (or combination)>has got you covered. You wonder what the value of a variable is?
C-h v <variable name>. Want help with Emacs?
C-h C-h. Boom.
- The Emacs X Window Manager. Just recently, I finally got it set up to the point where Emacs now manages all of my windows (yes, for all applications) for me. How many other editors can do that? Your move, ’Code.
- Emacs Lisp
- I think Lisp is a pretty cool guy. He lets you configure emacs down to the bone. Much like the monarch of beef patties, he let’s you ‘have it your way’, and honestly, that’s the way I like it.
What I’m not crazy about
- Its single threaded nature
- This is usually not much of an issue, unless you somehow end up freezing the main thread, which can happen. In that case, best restart your editor.
- Lacklustre support for certain languages
- While most languages I use are very well supported in Emacs, I struggle with others. In particular, Microsoft’s .NET languages have been hard to get set up properly.
- Emacs Lisp
- Yeah, it’s back. Mostly because I don’t really know Lisp yet (relax; it’s on my todo list). Until you’re comfortable with it, it makes changing your config just that little bit trickier.
What I miss from the VSCode days
So it’s not all roses. There are some things I miss from VSCode.
- The ease of use
- I can’t really that the learning curve is steeper; getting started with VSCode is just so easy. Also, installing extensions is a piece of cake.
- The massive amount of plugins
- Not that Emacs doesn’t have packages, but most communities I see seem to have settled on VSCode as their darling, so that’s just where you’re going to see the most activity and up-to-date plugins in a lot of languages.
- The amount of documentation
- I mentioned that Emacs is self-documenting. This is great. But it’s also … over 40 years old (1976?! Gee!)! So finding documentation online is tricky in comparison.
- The community
- Everybody loves
RaymondVSCode. That’s great and makes it super easy to find articles on how to set it up and configure it and so on. Need help? Ask anyone. Chances are they’re using VSCode. The Emacs community is great too, but much, much smaller.
In the end, do I regret it? Not for a second. I think it’s a worthwhile tradeoff if you can take the initial learning curve and are willing to put some time into your editor. So if you feel inspired, should you do it? All I can say is that if you pay the upfront cost, Emacs will return it tenfold.