RubyMine 6.0 Released
blog.jetbrains.com
blog.jetbrains.com
helm-git-grep, projectile-find-file with helm completion, and a keyboard-controlled split-window layout have proven much better in practice for code navigation.
The sheer ease with which new editor functionality can be prototyped and implemented is hard to beat.
The price is lower for upgrades so that you don't re-pay the full cost of the product every year.
> Upgrade is free personal licenses bought after October, 30, 2013.
[1]: https://twitter.com/andrey_cheptsov/status/39810301797663948...
- If you purchased a product that was not bound to subscription model, you got ALL minor updates independently of the time passed.
- If you purchased a product bound to subscription, you get 1 year free upgrades, both major and minor.
All functionality from the mentioned products would be available through IntelliJ IDEA plugins, however some features (really few non-essential) may be temporarily unavailable due to newer or older versions of the IntelliJ Platform. It is worth noting that the plug-ins are not sim-shipped though, so there is some delay.
Let me address now your specific situation as described above.
IntelliJ IDEA 13 will be released very soon. It will include the features from the recently released "smaller IDEs." Another point is that you do not need WebStorm. All WebStorm features are available in PyCharm and RubyMine or can be installed as plugins. Again, the plugins are not sim-shipped and will be available sometime after IntelliJ IDEA release.
To recap: IntelliJ + plugins cover all functionality that all our IDEs provide. On the other hand, dedicated IDEs are convenient being more lightweight, offering a simpler UI and faster performance.
I still use ST3, TM2, and from time to time other editors whenever I want... but RubyMine, being a complete IDE, does so much more than those tools.
Managing your product in RubyMine doesn't preclude using other editors alongside it for more intensive code editing sessions, if desired.
Most of its menus are not really OS X menus at all, they are transient floating windows with wrong behavior. It doesn't have normal windows -- some can only be floating windows, but they float over some windows and not others. You can spend hours tweaking the keyboard shortcuts, but you will never get them quite sane. Text drag and drop isn't right. Tools like Typinator and multi-clipboard managers don't tend to work well with it. It doesn't interact with the system pasteboard well.
In short, as a Mac app, it's totally gross. But as an IDE, it is very powerful. Using it is a pain if you really want a nice Mac tool, but if you think about it the same way as you think about logging into a remote Linux server to do some work, or doing some task in Windows in VMWare Fusion, it's not that bad.
The area where is falls short the most is the actual editing of code, because (at least for me) that is a long, iterative task, where the OS conventions and staying true to the standard ways of doing things are most important.
I used RubyMine for 8 months before switching to emacs. I was more productive after 6 weeks in emacs than 6 months in RubyMine.
Emacs' robe integrates with pry to do symbolic lookup of definition (I guess that's what you mean by "method click-through"). It works especially well when you're browsing symbols created through metaprogramming. But I don't normally use it, I normally use helm-git-grep, often initialized with text from the cursor. This package changed the way I worked - it's instantaneous incremental grep from across your whole repository.
Much of the app I work on is written in CoffeeScript and Backbone. Instantaneous lookup of message strings made whole chunks of the app almost trivial to work with, whereas they were a chore before.
I don't code languages like Ruby in anything like the same way I write C or Java. I find Ruby is best written in an in-context REPL, where the results can be interactively seen. I then look at the command history and pluck ou the bits I want to keep, and refactor them. Emacs REPL buffers work very well for this too.
The ability to write a mode hook that binds a key to a function that's especially handy in that mode - or even bind a key to a lambda that only needs to work in the current session - is killer though. Binding keystrokes through UI is a complete PITA, and it always feels like a dodgy investment, because you don't know how easily or reliably you'll be able to export it or import it onto the next version or next job. Whereas the investment I put into emacs feels like it'll last me decades.
I like how the I is cleaner/sparser, with the hot button in the lower left to make less often used tools visible.