Illuminated Cloud - Day One Impressions
Recently there's bit a fair bit of talk about Illuminated Cloud. I first heard about it on the Good Day Sir! podcast (which you should definitely subscribe to, and leave a review for), then we had an excellent demo of it at our local Developer User Group and finally I discussed it briefly with Steven on CodeCoverage(which you should also definitely subscribe to, and leave a review for). Today however, I decided to actually give it a try for myself. For the record: I tend to avoid Java applications as much as possible.
A Quick Guide to Installing
I found plenty of guides on how to use Illuminated Cloud, but didn't find anything about how to install it. As someone who's not used IntelliJ before I figured I'd write up the steps here to help anyone else in the same situation.
Before anything else you need to install IntelliJ IDEA. The Community version should do everything you need, though I have been told that the Ultimate version is worthwhile for any company doing a lot of Lightning work. On first run IntelliJ sets up a few plugins based on your preferences, and I was made very happy when a 'vim-like' plugin was presented front and centre... clearly I'm not the only person in the world who regards such a feature as major requirement.
Once you've gone through the initial setup you're presented with a familiar landing screen:
To install Illuminated Cloud click through Configure -> Plugins and then search for "Illuminated" in the box at the top. You'll see a message saying "No plugins found" with a link to search repositories, click that and you should find the plugin:
Once it's installed the Install button will change to allow you to restart the IDE. From that point onwards the existing guides should have you on your way.
Stand Out Features
Diff-style syncronisation
I was aware about this thanks to the demo that Damien Marshall did out our DUG meet-up, but the diff-tool used to select project metadata is pretty handy. Being able to quickly and easily see what you have locally versus what's on the server really does help when working with a third 'repository' such as git.
The Theme
Yes, this is really IntelliJ and not Illuminated cloud, but I like dark themes and IDEs that look clean. This is something I struggle with in Eclipse and Xcode, but while not feeling native, IDEA does run well and look good. The default syntax highlighting for Apex looks great, though I did change the font to use my goto coding font, Mononoki.
Local Symbol Tables & Docs
It's very convenient that Illuminated Cloud can extract symbols from your code to make it easy to look things up and to take full advantage of auto-completion and the like: command-click on one of your own methods on a Mac will take you to that method's definition. What's also really handy is it builds out stub classes for Salesforce's own classes too, so command-clicking (I imagine that'd be a control-click on Windows or GNU/Linux) takes you to that and you can see what methods are available to you.
That's great, but what's even better is that the combo ctrl-J (ctrl-Q) on Windows pops up the documentation! This is far more comfortable than going to lookup the class in question online.
Importing Existing Projects
Importing existing code on disk as a project wasn't immediately obvious, though mostly because I wrongfully assumed that using IntelliJ's New -> Project From Existing Sources... option was functionality belonging exclusively to the IDE. If you choose this option and choose an existing directory then it does in fact pick up that the files constitute a Illuminated Cloud project and configures it as such. You can then plug in your credentials for the org in question and it'll go through the motions of building the symbol table etc..
I went through this process with a project that I'd been working in in Sublime Text/MavensMate and soon had my unit tests running. They did seem to be running quite slowly compared to what I get with MavensMate but given there's no real local processing involved I believe that's just down to the platform at that particular point in time.
What's Next?
I'm going to try and use Illuminated Cloud as much as possible for the next week or two. I suspect it's going to take some getting used to, and there's heap of keyboard shortcuts to learn to get the most out of it. One major potential issue for me might be that unless I fork out a few hundred dollars (not because of Illuminated Cloud itself, but restrictions imposed by the community edition of ItelliJ) it seems like working on JavaScript side by side with everything else isn't really a starter, and over half my code base is JavaScript.
Obviously I'm only a day in—and a day with little coding at that—meaning it's a little early for conclusions, but initial impressions are valuable, and I'd say if you're doing development in an enterprise level org (read: loads of code), then spending time experimenting with Illuminated Cloud would definitely not be time wasted.