IDEs (Was: Mainstream D Programming)

Peter C. Chapin pchapin at sover.net
Sun Oct 14 15:32:39 PDT 2007


Robert Fraser wrote:

> * Show exactly where in a huge string mixin an error occurs
> * Show the particular instantiation of templates
> * Manage imports automatically, so whenever it comes across an undefined symbol, you just need to press a button to import the required module, not look up what module it's in, etc. Never write another import statement! This could also improve code quality, since you could make it only use selective imports and never pollute your namespace by importing an "all" module.
> * Mark errors instantly (and have suggested fixes for some of them), rather than having to compile every time.
> * Automatically implement stubs for inherited abstract methods/interfaces.
> * Track TODOs, etc.
> * Show formatted Ddoc on hover.
> * Integrate debuggers to visually step through code.
> * Format source code
> * Autocomplete
> * Go-to definition (even across files)
> * Additional warnings and static analysis if you want them (for example, it could warn for "x == null" or integrate Coverity-like nulll checking)
> * Automatically organize/sort source code
> * Generate an interface or abstract superclass from the intersection of one or more classes' methods.
> * A "use supertype where possible," where all references to a subtype are changed to references to the supertype if they can be (encourages more modular code in a highly OO system).
> * Change "auto" to its actual type.
> * Move functions/classes between modules and automatically update modules that reference them.

Some of these features can be accomplished with a powerful text editor,
especially with the addition of suitable macros, plug-ins, or third
party tools (that are invoked from inside the editor, of course). For
example, Emacs together with the etags program can implement the "Go-to
definition (even across files)." I actually do this quite regularly.

Considering how programmable high end editors are, I suppose in the long
run there isn't necessarily much difference between an IDE and a text
editor. For example: jEdit has a plug-in that will do XML validation.
Who needs an XML development IDE? Except that jEdit really *is* a kind
of XML development IDE (with the plug-in added).

My $0.02... IDEs are cool and I use them. But strangely at the end of
the day I find myself doing most of my editing in Emacs. Why? Because
Emacs works the same on all platforms, works on all text files, and can
be extended to do all sorts of interesting things when and necessary. As
weird as this sounds, I sometimes use Visual Studio to manage the build
of my C++ programs while editing their source in Emacs in a separate
window. (I do this because out-of-the-box Emacs knows how to word wrap
comments in C++ comment blocks... a feature I can't live without).

Peter



More information about the Digitalmars-d mailing list