Descent 0.5 released
Ary Borenszweig
ary at esperanto.org.ar
Sun Feb 3 20:19:40 PST 2008
The Descent plugin for Eclipse provides an IDE for writing, launching
and debugging code in D.
Explanations on how to get it from within Eclipse are here:
http://www.dsource.org/projects/descent
The new features for this release are:
- Full autocompletion, which also writes the imports for you. No need
to remember where that class or function you are looking for is located.
Just start writing the name of it, press ctrl+space, select the
suggestion, and the import is added at the top of the module
automatically (no need to critic Tango anymore :-P). External variables
does not participate in import-adding, because there are *so* many
public ones...
- Go to definition. It even works for opCall and magic array
functions. :-)
- Semantic highlighting: you can choose to color aliases, typdefs,
classes, structs, interfaces, unions, templates, local variables,
functions and function calls, etc., with different colors.
- Showing of semantic errors. By default, some semantic errors are
shown, like undefined identifiers or unresolved types. You can turn this
off, or you can enable full semantic error reporting (but it will
probably lie in some cases, that's why the default is "some"). It is
recommended to turn this off for existing big projects, as it may cause
more trouble than help.
- Compile-time evaluation of functions and other properties: hovering
over an element while holding ctrl+shift shows it's compile-time value.
You can use this for built-in properties like init, min, max, sizeof,
alignof, stringof, mangleof, length, constants, enum values and function
calls (try writing a factorial function, then invoke it with a constant
value somewhere in the code, and ctrl+shift+hover over the call). If the
result of the evaluation is a string, and it is likely a declaration, it
will have syntax highlighting and will be formatted according to your
formatter preferences. This is useful for seeing the string passed to a
mixin.
- Graying out of inactive code: shows in gray code that is not
reachable because of debug or version levels/identifiers and static ifs
that evaluate to false.
- Improved occurrences finder: selecting a token highlights all other
tokens with the same semantic meaning. Then, pressing ctrl+2, r, allows
you to rename all those occurrences. Very useful for renaming local
variables, functions and types.
- Declaration view: shows the source of the element under the cursor.
For current users: after you update the plugin, go to Windows ->
Preferences, D -> Compiler, and change any setting. It will ask you to
rebuild everything. You'll need to do this since I've changed the format
of the indexes for searching stuff. Otherwise you'll get errors, or some
things won't work.
And now, my personal comments about the current specification of D about
developing an IDE for it:
- Difficulty to suggest autocompletion for getters, and in particular
setters. There's nothing in the language that says "this function is
meant to be used as a setter". So currently, if you autocomplete a
method that looks like a setter, you will get something like this:
"var.member = |foo|", where you can start overwriting |foo|. While
testing Descent, I found more setters that "procedures", and thus this
decision.
- Public imports are bad, bad, anyway you see it: they polute the
global namespace, they make compilation slower (and also an IDE slower),
they make finding the definition of a symbol harder (well, if you don't
use an IDE). So if you use import foo.all, forget about getting good
performance in Descent. Anyway, you won't need to use that, because
Descent writes the imports for you.
Finally, as always with such an ambitious project, we need help! We're
looking for testers, documentation writers, translators, and most of all
developers. If you're interested in helping out, check out this page,
which summarizes what we're looking for:
http://www.dsource.org/projects/descent/wiki/Development
Any suggestion, critic or bug report is welcome. You can use:
- the forums: http://www.dsource.org/forums/viewforum.php?f=107
- trac: http://www.dsource.org/projects/descent/report?action=new
More information about the Digitalmars-d-announce
mailing list