As in how versus what.

I'll use two examples: emacs and JBuilder.

JBuilder has a built-in debugger. You can't get rid of it, and it only does Java.

Emacs uses whatever debugger you have on the system by wrapping it in a buffer and tying it to file type.

Both, for all intents and purposes, have an "integrated debugger". The only difference is whether you can swap it out or not.

"Integrated Development Environment" to me says that the program allows you to run various tools within the environment, whether they come as plugins or integral to the environment. Many code editors are approaching this from the bottom with plug-in architectures, and there are very few editors that *just* edit. The key in "IDE" is that the environment is aware of the tool and can use it in more than just ancillary fashion. Most IDEs and editors let you shell out to external tools.

I guess emacs is more of a unique beast. It's flexible, programmable, and agnostic, unlike most IDEs. However, it is aware of a wide variety of file types and external utilities, unlike most editors. It's an editor that has been extended into becoming an environment.

This is why I wub it so. ;-)