I understand speed - I use vim for quick edits/changes - but simply being able to jump to the source of a function you're looking at is huge (yes I know about ctags for vim - doesn't even feel like it comes close).
EDIT: One of the other huge benefits of IDEs in general is working with and studying code that you didn't write yourself. All the sublime and textmate fans I know are almost always just writing their own code from scratch, or using a small subset of well-known plugins for popular framework X. Taking code written by someone you didn't know, who perhaps didn't even know language foo very well, is a pain that is lessened somewhat by using a capable IDE vs a plain text editor.
Emacs + Slime for Common Lisp programming is often held up as an example of this. It provides all the features you mentioned + more. Slime (or rather Swank and alternatives that have been made) has been used for other languages as well: Clojure, JavaScript, Haskell, Ruby, R.
If you work in more than one language then Emacs and Vim quickly start to look enticing since most IDEs either don't support them or don't support them well.
That said, I have no opinion on IntelliJ. I have never used it, but it sure sounds like I should try it out sometime. The last IDE I used was XCode one year ago and Eclipse a couple of years ago and they didn't make me very happy.
edit: My point is, people often hold up both Emacs and Vim as "just text editors" but coupled with a Unix environment and the right programming languages (not Java) they provide a lot of features that IDEs do. Besides that one can use these editors for a lot of other editing tasks like writing manuscripts, e-mail, blogs, etc. giving you the same powerful editing functionality for those tasks.
People saying this have never really spend much time with a modern IDE.
It's like having Vim newbies saying it's too difficult and they prefer Pico, only in this case it's the IDE that's the more advanced.
I'm working on a personal project in my spare time which I can use it on. (Except the project is using Common Lisp so it might not be a good match.)
I forgot to mention in my original post that I've also spent time with Unity3D recently although for some reason I didn't think of it when thinking of IDEs I had used in the past.
Emacs out of the box (install ruby-mode) is not even close to RubyMine. Now, if I spend many hours, and I value my time a great deal, I can get emacs kinda close to the features of intellij.
Frankly, I'd rather pay $60/year than spend many hours trying to get emacs close to as good as RubyMine.
When in Java, there is a mishmash of supporting file types, and it integrates them very well compared to its competitors - jump between .java, .jsp, various .xml for Spring, Hibernate, tag libs, etc etc. If you are "just" programming in a programming language (which is a lost utopia in for J*EE developers), much of this functionality is not of much benefit to you, but you might still find the IDE valuable.
Yes, it's quite good. Visual Studio is also very good in some aspects. And you can also get a lot of mileage out of Eclipse. Also try some Smalltalk environment, you'd be surprised.
The thing is, there are things missing from Vim/Emacs that are not easily added as ad-hoc plugins. Not merely this or that feature: what is mostly missing is a coherence in supporting a specific language.
And once you get ReSharper, also from JetBrains, Visual Studio becomes quite good, too :)
I would hands down pick the right language for a project and then the editor.
(I am actually a Vi guy, but switch to an IDE for any project that involves more than just me)
I used to adore Emacs in college, but since I've actually had to work on large projects I would never switch back to using except for when I need to bang out a python or shell script.
I've used various versions of emacs over the years for most of my programming (mostly C/C++ with some sprinkling of python and java). I've recently had to use Eclipse for Android dev. I agree that it'd be almost impossible to integrate the entire GUI dev framework of Eclipse Android environment in emacs (not to mention continuous compiles and other java-firic features) and that's the reason I use Eclipse for Android. But "Jump to Source" ? Emacs is a far better and faster experience for me when it comes to trolling around in big, unfamiliar code-bases. The small subtle lags with eclipse (it's not as bad now with my monster new dev machine with 16G of ram) still irritate me. And the Emacs keybindings are almost there but not quite.. which is another big reason I've resisted IDE's. They're just slower for actual editing of code. Always. Without fail.
Regarding ctags, it's useful enough, but it doesn't do a great job of things like jumping to the definition of the "flags" part of "p->flags", if you've got lots of structs that have a "flags" in them. Same goes for member functions. It's absolutely no fun trying to find out what something is, and just getting a list of every single thing of that name in your program. Thanks ctags... but I actually know how to use grep. And if I used grep, I'd get a callers list too.
I found ctags workable, but overall disappointing.
Are you referring to this line:
"The fuzzy parser supports C, but is flexible enough to be useful for C++ and Java"
I think you might be misinterpreting the wording there. It's called "c"scope because it was initially written for C and C only. The line above is suggesting that it also has support for C++ and Java (because it has a "fuzzy" parser... whatever that means).
May clang cause people to expect more from their tools.
Also, I found it really slowed things down (in RubyMine), sometimes updating just 1-2 characters a second in a big project (on a modern MBP).
I've gone back and forth, but generally I prefer Vim with Janus distro, albeit I miss a lot of cool things from IDEA.
I just upgraded from a "modern" macbook pro (2008, aftermarket SSD) to a "modern" retina macbook pro that is maxed out. IntelliJ and RubyMine fly like the wind on this new machine. The old one was painful to use IntelliJ but you could live with RubyMine performance.
They've found a good tool, emacs or vim, and want to use it everywhere. They've invested time and effort into being productive with it. Moving to an IDE requires time and effort as well. IntelliJ and the family are deceptively simple. You can start editing right away, but to enjoy the full power, you need to learn it. Just like vim or emacs.
[1] http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-...
However, there is still an unacceptable delay between typing and feedback, around 300ms.
Performance was clearly not a priority for them.
I want a good IDE, but none of them are good.
http://blog.jetbrains.com/webide/2012/08/liveedit-plugin-fea...
I think Emacs will get a big resurgence if they ever get a better Lisp (aka Guile) integrated so they can get better performance. After all, Emacs is just a big Lisp interpreter. In theory, Emacs can do anything.
Using an IDE took your coding to a next level just as design patterns took your coding to a next level because, by using Java (or C#), you need to automate and repeat tasks that should never have been mandatory to repeat in the first place.
To me nothing beats a programmable "text editor".
I don't doubt you consider yourself "productive". However Rich Hickey created Clojure using Emacs and then, using Clojure, he created Datomic. That's certainly something I'd call productive. So there's not one true way or true light to see to "take coding to next level".
It's good for you if you like your Java/C+ + ORM ([N]Hibernate) + XML + SQL hell. I don't like that particular hell which I know all too well and, thankfully, many programmers don't like either and are, productively, creating a better world for us programmers.
I still did buy IntelliJ IDEA version 12 during their doosmday promotion because at 55 Euros or so I figured out it was going to be handy the day I'll be forced to work on some pathetic Java / Hibernate / XML / SQL hell codebase but, thankfully, I still didn't need to install it (it's only two months but still...).
Meanwhile Emacs / elisp / Clojure are getting their daily dose of love.
Your Mileage May Vary but I honestly think you don't realize that most of the tasks IntelliJ allows you to automate are tasks which shouldn't exist in the first place.
P.S: it's possible to configure vi(m) and Emacs using eclim / emacs-eclim so that you can use, right from vim/emacs many of the features of Eclipse (like auto-completion). This is something with may see more in the future and that we may see working with IntelliJ too.
So I guess the information below will rock your world and change your editor of preference:
"I developed Clojure in IntelliJ and still do (the Java part)."
IntelliJ is a productive tool, and it is interesting that Rich sometimes uses it. BTW, I do about75% of my Clojure development work in IntelliJ and about 25% with Emacs and nRepl. I find IntelliJ just a little more productive, but both are great working environments.
I also work in a number of non-JVM languages in Emacs, and have used it for quite a long time. For JVM work, IntelliJ is, as you say, 'a little more productive'.
There are pros and cons with Java, but if that's what the application is written in, then I'd much rather use IntelliJ than Emacs/Vim. The reason is that a lot of the coding is navigating the code base - finding out what the arguments of a method are, or finding out all the usages of a class/method/variable. This is much quicker in IntelliJ than in a generic editor.
Another argument I hear a lot against IDEs in general (although not from you) is that they force you to click the menues a lot. Not true. There are great built-in keyboard short-cuts, and of course you can create your own, so there is not a lot of reasons to touch the mouse.
I understand that there ARE Common Lisp jobs, but those are few and far between compared to more established languages.
So, what exactly do you do with Common Lisp?
Edit: A post by him http://markmail.org/message/pon2e77mdtkath26