Depending on the language used Emacs and Vim provide these features as well and not just as dozens of brittle extensions.
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.
Ok, tell me which modern IDE I should spent some time with. Is IntelliJ IDEA mentioned here good enough?
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.
I use emacs and intellij a lot. Let's compare them based on ruby, which they both "support". Out of the box RubyMine (intellij's ruby IDE) works extremely well, especially if you're doing rails projects. Again, this is out of the box with no work on my part.
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.
IntelliJ IDEA is very good for Java, and good also for other JVM languages. But how good it is depends, both on the effort put in by the IDE developers and characteristics of the programming language in question (how well operations in the IDE are supported by the typing characteristics of the language etc)
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.
>Ok, tell me which modern IDE I should spent some time with. Is IntelliJ IDEA mentioned here good enough?
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.
Anyone I know that has ever used ReSharper will struggle to work without it. ReSharper is one of the best tools I've ever used, and it makes writing C# a joy.
I was a big netbeans fan for a couple years precisely because it supported multiple languages decently. I've done some work in Eclipse (raw Eclipse, Aptana and Zend Studio), but tend to prefer Jetbrains products for most situations. Doing Grails work, Intellij was the best purchase I ever made - it saved me countless hours in tracing through and learning code I didn't write.
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.