I actually think the idea of a single, unified, development environment like what you're after is somewhat antithetical to OS X design principles. One of the great things I've found, since switching to OS X for development work about a year ago, is that many OS X application developers share my own personal philosophy when it comes to software: do less, but do it really, really well.

As such, my current development environment on OS X is less unified than it was on Windows or Linux, but far, far more stable, robust, and ultimately: productive.

For coding I use TextMate. It seems almost trivially simple at first and then you discover bundles and it's built-in command line filtering and it takes off. It will handle the highlighting tasks you requested. It has projects, and while they seem kind of loose at first, you'll grow to appreciate it. Trust me. And it does handle code completion, tag closing, tag matching -- the sort of stuff you'd expect -- it's just not obvious, but it's there in Bundles and waiting for you to customize it.

Update: I've moved off TextMate and on to Sublime Text 2. The regular updates and the Python-based extensions were a major draw. It's been a year now and no regrets with that switch.

I use Kaleidoscope for diffs. It's just an a beautiful diff tool.

My git tool is Tower and my Subversion tool is Versions. Both awesome.

For permanent, remote drive access via ssh I use MacFUSE to connect to the remote location and mount it as a drive on my Mac. This is a superior option to built-in ssh or ftp support in the IDE because all the programs on my Mac can now work with files on that share.

I also use CyberDuck for it's awesome cost and excellent Amazon S3 support. I could even get away with just CyberDuck, no MacFUSE, if I had to. But I don't. :)

Update: I've switched to ForkLift 2 as my primary means to interact with remote file systems. It's got a nicer UI than CyberDuck and a few less "quirks" to it. I'll still occasionally open up CyberDuck when I need to deliver a signed URL to an S3 object.

Finally: iTerm 2. A terminal app befitting OS X. It really is quite a fantastic terminal. Bookmarks make it easy to get to my AWS machines quickly. The UI is clean. And tabs.

All of those things replace the clunky IDE (Komodo Pro) I use to use on Linux and Windows (and never really liked, just tolerated). And I don't even know that they're not all "unified" in one cluttered, modal window. No sir.

For reference, I write a lot Python, some HTML, JavaScript, Perl, and Java. And the occasional bit of C and C++.

Update: There's more Go in my day to day coding now. My toolset integrated that relatively young language without so much as a hiccup.


It's not an IDE, but the Vim editor does everything that you have asked for and much, much more!

Vim!

Even better, it comes pre-installed with Mac OS X. Also, once you have used it on OS X, you can use it on Windows, Linux, BSD, Amiga OS...