For all the rest, you don't want to have the IDE intimately tied to the commands and data structures and conventions of some particular project or vendor tools.
Have you ever worked with AdaMulti (Green Hills Software for Avionics).
AdaMulti is an IDE, with all the features I listed above! And it's what we daily use for business.
So does Eclipse
Windriver has spent a lot of time on IDEs, deciding then to turn the opensource project
Eclipse into
Workbench, that has been dedicated to the
WxWorks RTOS, for which the IDE does what I have listed above through plug-ins.
It's a good idea! Except ... it's a dead elephant unless you can run it on fast (i7 + a lot of GB or ram) computer.
The WR Workbench is able to create a dependency list from given modules (C files) and create a Makefile. This is also useful for code analyzing since you can literally pass internal data (in RAM) to the plugin that performs the analysis. Unfortunately, it uses a silly metadata approach which is very fragile and prone to disasters, especially if you don't properly do your backups. You have to save the metadata with attention to their timestamps, which requires a special flag used when you invoke tar|gzip or whatever tool you want to use for archiving.
When you extract a project to
Doors, or to
Stood (here I wish they weren't external programs, I wish they were plugins), you'd best first backup it. People usually forget the proper flag, or worse still, they do backups on through a network file system (which sometimes exposes time-skin), and when people try to resume the backup ... catastrophic bitter ends then follow .... and you end for being obliged to recreate the project from the scratch.
Well, no C file will get lost, but all the constraints gone
edit:
My point, in case you missed it, is that it's better to have flexible Integration you can configure and tweak yourself than someone else's one-size-fits-all solution that works for .. I don't know .. C++ and Visual SourceSafe, but not Python or PHP and not git or subversion.
Ah, ok! If this was the point. I agree. AdaMulti is only for { C89-99, C++ (limited support), Ada95-2000 }.
But usually, for PHP and Python, I use dedicated tools, different from what I use for C programming.