It started with TextMate when I first discovered Ruby on Rails in 2006 or so. TextMate went for ages without an update, Sublime Text was getting popular, and appeared to have mostly-complete compatibility with TextMate, so I switched.

Now Sublime has finally annoyed me. The Ruby and Haml packages just try too hard to be helpful, throwing brackets and indents around like there's no tomorrow, often in places I don't even want them. Time to try out Atom, especially since Github had a rather amusing video about it.

It takes quite a few packages to get up to the level I had Sublime at, but I think I'm basically there. Here's my setup:

  • Sync Settings - back up your Atom settings to Gist. Here's mine. Like dotfiles, these are meant to be shared. In Sublime this was a PITA involving symlinking things to Dropbox.
  • Sublime Word Navigation - nothing is more frustrating than having to hit alt+← twice just to get past a stupid dash.
  • Editorconfig - keep your coding style consistent.
  • Local Settings - I've wanted this in Sublime for ages. Simple things like max line length, soft wrap settings, and even package settings like "should RubyTest use rspec or zeus" on a per-project basis.
  • RubyTest - speaking of... Does everything I need from Sublime's RubyTest, just had to re-map the keyboard shortcuts.
  • Pigments - shows css colors in the editor, and alternative to Sublime's GutterColor.
  • Aligner - works way better than Sublime's AlignTab package.
  • Git History - step through the history of any file.
  • Git Blame - shows the last committer for each line in the gutter. Unfortunately, the gutter is too small for many names, so it craps out and shows "min". Also, the gutter can't keep up with the main window's scrolling, which is janky.
  • Git Plus - I still end up doing Git on the command line. This often didn't support the stuff I need to do on a daily basis.
  • Language-haml - if you're unfortunate enough to have to deal with HAML, this kinda helps. Like putting a band-aid on a bullet wound.
  • Rails Transporter - this is a nice idea, but it still doesn't cover the functionality that Sublime's RubyTest had. cmd+. would let you jump from a file to the spec file and back, and transporter just gives up if you're in a namespace, form object, worker, etc.

How's it working out? Well, Atom still feels a bit unpolished overall. Some of the packages above don't work quite right, or aren't as helpful as they advertise. And Atom's auto-completion is annoying as bloody hell. It seems to use CTAGs or some variant, so it pulls in all symbols from everywhere, and the one I want is never even close to the top. And it pops up on every. single. thing. I. type. in a big flashy multi-colored box that randomly switches whether it's above or below the cursor.

Finally, the quick-tab-switch is terrible compared to Sublime's. It's fuzzy matching is way worse, it ignores punctuation like underscores, and definitely maintains no concept of how "nearby" a file is, nor how recently I've opened it.

I might switch back.