A few months ago I got a hint to try out Spacemacs from beatpanic. At that moment I just had figured out how to set up Emacs in a nice way via Nix, so that I have a similar environment on Linux and Mac OS X.

I am describing in this article how I set Spacemacs up on Darwin and which parts made me smile a lot during the first weeks.

Set it up - via Nix

There had to be Nix involved somehow, since I am by now a heavy user of it on my macbook. I install most software via nix-env and Spacemacs should make no difference in this regard.

Git and Emacs as a base

To set up Spacemacs you will need Git and Emacs as a starting point:

nix-env -iA nixpkgs.git
nix-env -iA nixpkgs.emacs

Note

Running the resulting emacs only works smooth if I call it in the following way:

~/.nix-profile/Applications/Emacs.app/Contents/MacOS/Emacs

Since I start up the daemon automatically as part of my user session, I did not yet investigate why it has to be this way.

Spacemacs repository

Starting with Spacemacs is basically cloning a repository into ~/.emacs.d:

git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

It did pick up the new configuration at the next start and download all needed dependencies. I was a bit disappointed because I did not find a nice way (yet) to package it up fully with Nix, but that's a detail for the moment.

First impressions

It takes a bit to get used to the SPC in Spacemacs. Basically every command starts with a press of the space key followed by shortcuts based on mnemonics. Especially the mnemonic part turned out to be a huge helper for me, I felt fluent already after the first few hours.

At this moment I also decided to go for the vim like evil mode. This switch was also more or less without any issues for me, I did the tutorial though, and am recommending it for people who are not used to vim.

The only impression which I remember is that I was for a few days just overwhelmed how many things I had ready configured for me: web-mode, magit, org-mode, tools for Python development etc.

Only one negative thing hit me once when an update of the packages failed, at that time I did not yet understand that I can just wipe the cache and restart it, so that the installation will start from scratch again.

Plugin / Mode impressions

web-mode

I was doing some heavy development work with some frontend technologies involved and used web-mode. It took me a while to realize how nice it works. I got support for CSS, HTML and JavaScript. Event ReactJS specifics like JSX worked smooth for me.

magit

This plugin allows to perform all Git operations based on a nice text based interface.

By now I am doing nearly all my Git work based on it. Some aspects like rebasing or cherry-picking took me a moment to understand, but once I got the magit concepts, it worked just smooth.

ERC

There is just nice IRC support available based on the erc layer. I've combined it with ZNC on my server and making nearly daily usage of it. Make sure to also use the layer emoji just because it is fancy, I am still shocked each time I see an emoji in one of my buffers.

python

I am making use of the python layer since the first day on a daily base. The configuration is quite nice out of the box and I did not yet feel the pressure to tweak it a lot.

When starting Spacemacs inside of the development environment of a project, I even got a fully working auto-completion out of the box.

org-mode

I was already making limited use of org-mode before the switch to Spacemacs thanks to recommendations for former colleagues of mine. Together with the switch to Spacemacs I decided to move all my note taking over to org-mode. It did pay off so far and I strongly recommend to have a look into org-mode.

Conclusion

So far am a very happy that I did the more or less spontaneous switch when I got the recommendation to use Spacemacs. Just after a few weeks I felt as productive as before. With the difference that I am now doing nearly everything inside of Spacemacs. That's already a nice time saver for me.


Comments

comments powered by Disqus