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

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

sure as if i did not look at this installing page.. the problem is, i
never ever used eclipse and if i am representing the silly eclipse noob
i am unsure what of the thousand possible download packages to choose
from the eclipse download page. but after trying the standard java crap
i tried the biggest package available and it worked... thanks
Ary Borenszweig schrieb:

Extrawurst escribió:

what is the minimal eclipse download one has to choose to be able to
use descent ?

looks like an awesome feature list! respect!
i have just one question, is the D2.x language supported aswell with all
the nifty features?
Ary Borenszweig schrieb:

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

D 2.x is supported, but the semantic analysis is for 1.x. In fact, I
just tried it, and if you write "invariant(int) x;" you get a lot of
syntax errors, so D 2.x is not supported (tiny bug, I've just fixed it :-()
Extrawurst wrote:

looks like an awesome feature list! respect!
i have just one question, is the D2.x language supported aswell with all
the nifty features?

1) ok well for D2.x Descents new features are pretty useless. even a
HelloWorld is too much cause phobos in D2.x is full of strings which
Descent doesnt seem to understand.
2) is there any documentation of the features in Descent besides the
feature list where one can eventually find a shortcut how to use it.
cause features like the formatter are just usable for new users when
they find the shortcut for it in the preferences-options menu
Ary Borenszweig schrieb:

D 2.x is supported, but the semantic analysis is for 1.x. In fact, I
just tried it, and if you write "invariant(int) x;" you get a lot of
syntax errors, so D 2.x is not supported (tiny bug, I've just fixed it
:-()
Extrawurst wrote:

looks like an awesome feature list! respect!
i have just one question, is the D2.x language supported aswell with
all the nifty features?

1) ok well for D2.x Descents new features are pretty useless. even a
HelloWorld is too much cause phobos in D2.x is full of strings which
Descent doesnt seem to understand.

The way Descent works is that it has a (fairly complete) port of the DMD
front-end. Since the DMD front-end is fairly large already, maintaining
two versions is a LOT of work. So 2.x support will be there, but we're
focusing mostly on getting the framework for a lot of cool features,
into which we can insert 2.x semantic analysis. In other words, it'll be
there, but just not right away.

2) is there any documentation of the features in Descent besides the
feature list where one can eventually find a shortcut how to use it.
cause features like the formatter are just usable for new users when
they find the shortcut for it in the preferences-options menu

I'm going to work on some docs soon, and AFAIK Ary is doing some videos.
As usual with any project as ambitious as Descent, there's huge amounts
of work to be done & with only two people it doesn't get done very fast.

1) ok well for D2.x Descents new features are pretty useless. even a
HelloWorld is too much cause phobos in D2.x is full of strings which
Descent doesnt seem to understand.

Probably because of the bug I mentioned. After I fix some reported bugs
and receive improvements suggestions, I'll make another release. :-)

2) is there any documentation of the features in Descent besides the
feature list where one can eventually find a shortcut how to use it.
cause features like the formatter are just usable for new users when
they find the shortcut for it in the preferences-options menu

great i found out using some more features now!
a question: Is there a way to get a list of possible debug-versions or
version-flags in general ? so i dont have to type a "version(" somewhere
in the code to use the auto completion so it shows me the
defined/available versions ?
Ary Borenszweig schrieb:

Where do you want to use it?
If it's just seeing the available ones, they are in Windows ->
Preferences, D -> Compiler. The suggestions come from there, and from
the version/debug identifiers defined in the source file being edited.
Extrawurst wrote:

great i found out using some more features now!
a question: Is there a way to get a list of possible debug-versions or
version-flags in general ? so i dont have to type a "version(" somewhere
in the code to use the auto completion so it shows me the
defined/available versions ?
Ary Borenszweig schrieb:

well it would be nice for compiling a project which includes various
externaly created/edited modules which eventually use some version
identifiers which u are not aware of. do you see the point ?
Ary Borenszweig schrieb:

Where do you want to use it?
If it's just seeing the available ones, they are in Windows ->
Preferences, D -> Compiler. The suggestions come from there, and from
the version/debug identifiers defined in the source file being edited.

You mean, collecting all the version/debug identifiers in the project
and in referenced include paths, and show them to you, so you can know
all the switches?
Extrawurst wrote:

well it would be nice for compiling a project which includes various
externaly created/edited modules which eventually use some version
identifiers which u are not aware of. do you see the point ?
Ary Borenszweig schrieb:

Where do you want to use it?
If it's just seeing the available ones, they are in Windows ->
Preferences, D -> Compiler. The suggestions come from there, and from
the version/debug identifiers defined in the source file being edited.

You mean, collecting all the version/debug identifiers in the project
and in referenced include paths, and show them to you, so you can know
all the switches?
Extrawurst wrote:

well it would be nice for compiling a project which includes various
externaly created/edited modules which eventually use some version
identifiers which u are not aware of. do you see the point ?
Ary Borenszweig schrieb:

Where do you want to use it?
If it's just seeing the available ones, they are in Windows ->
Preferences, D -> Compiler. The suggestions come from there, and
from the version/debug identifiers defined in the source file being
edited.

That's actually an *excellent* idea, which I will implemenet for the
next release. And probably when search is implemented, you'll be able to
see where a particular version/debug identifier is used.
Extrawurst escribió:

correct.
Ary Borenszweig schrieb:

You mean, collecting all the version/debug identifiers in the project
and in referenced include paths, and show them to you, so you can know
all the switches?
Extrawurst wrote:

well it would be nice for compiling a project which includes various
externaly created/edited modules which eventually use some version
identifiers which u are not aware of. do you see the point ?
Ary Borenszweig schrieb:

Where do you want to use it?
If it's just seeing the available ones, they are in Windows ->
Preferences, D -> Compiler. The suggestions come from there, and
from the version/debug identifiers defined in the source file being
edited.

one other thing: i am heavily using derelict so pretty much every
function i use is a function pointer variable. is it possible to show a
parameter list even for them ?
example:
typedef int function(int,int,double) pfBlaaaa;
pfBlaaaa* Blaa;
Blaa(...
Ary Borenszweig schrieb:

D 2.x is supported, but the semantic analysis is for 1.x. In fact, I
just tried it, and if you write "invariant(int) x;" you get a lot of
syntax errors, so D 2.x is not supported (tiny bug, I've just fixed it
:-()
Extrawurst wrote:

looks like an awesome feature list! respect!
i have just one question, is the D2.x language supported aswell with
all the nifty features?

one other thing: i am heavily using derelict so pretty much every
function i use is a function pointer variable. is it possible to show a
parameter list even for them ?

How do you mean? You should be able to see the type/parameter types by
hovering over the variable name. I can check some of the other places
where functions are used (autocomplete on call exp, etc.) to hopefully
make function pointers and functions virtually interchangeable.

one other thing: i am heavily using derelict so pretty much every
function i use is a function pointer variable. is it possible to show a
parameter list even for them ?
example:
typedef int function(int,int,double) pfBlaaaa;
pfBlaaaa* Blaa;
Blaa(...
Ary Borenszweig schrieb:

D 2.x is supported, but the semantic analysis is for 1.x. In fact, I
just tried it, and if you write "invariant(int) x;" you get a lot of
syntax errors, so D 2.x is not supported (tiny bug, I've just fixed it
:-()
Extrawurst wrote:

looks like an awesome feature list! respect!
i have just one question, is the D2.x language supported aswell with
all the nifty features?

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.

I've used Included: (All) for my projects, but when trying to compile I get
a message that my source files is not included in the project when I try to
rebuild. Is this some bug in Descent, or is this expected behaviour?

Strange, but there are no updates in update manager (I am using Descent 0.4.4).
Ary Borenszweig Wrote:

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

They appear for me, although only via Help -> Software Updates -> Find
and install. I don't know why not via Help -> Software Updates ->
Configuration Manager. :-(
You can also try running Eclipse with "-clean".
Anyway, you can always grab the plugins from here, and replace the
existing ones:
http://svn.dsource.org/projects/descent/trunk/descent.update-site/plugins/
Leonid Krashenko escribió:

Strange, but there are no updates in update manager (I am using Descent
0.4.4).

They appear for me, although only via Help -> Software Updates -> Find
and install. I don't know why not via Help -> Software Updates ->
Configuration Manager. :-(
You can also try running Eclipse with "-clean".
Anyway, you can always grab the plugins from here, and replace the
existing ones:
http://svn.dsource.org/projects/descent/trunk/descent.update-site/plugins/
Leonid Krashenko escribiÃ³:

Strange, but there are no updates in update manager (I am using
Descent 0.4.4).

The 0.5.1.20080204 versions of JAR files are missing on update site, so
Eclipse unable to install Descent atm.

That's it, I commited a wrong site.xml with a future version number that
already doesn't exist. Fixed.
Thanks.
Vladimir Vlasov escribiÃ³:

Ary Borenszweig Ð¿Ð¸ÑˆÐµÑ‚:

They appear for me, although only via Help -> Software Updates -> Find
and install. I don't know why not via Help -> Software Updates ->
Configuration Manager. :-(
You can also try running Eclipse with "-clean".
Anyway, you can always grab the plugins from here, and replace the
existing ones:
http://svn.dsource.org/projects/descent/trunk/descent.update-site/plugins/
Leonid Krashenko escribiÃ³:

Strange, but there are no updates in update manager (I am using
Descent 0.4.4).

The 0.5.1.20080204 versions of JAR files are missing on update site, so
Eclipse unable to install Descent atm.

Hi. I ran into a problem when adding a compiler. I have Tango which
contains the DMD compiler and giving Descent the path the Tango's bin
directory, it says "Target is not a DMD installation Root. DMD
executable was not found". I put "dmd.exe" as the compiler name.
Am I missing something, or doesn't Descent just not recognize the
compiler when it's been bundled with Tango?
O.

Hi. I ran into a problem when adding a compiler. I have Tango which
contains the DMD compiler and giving Descent the path the Tango's bin
directory, it says "Target is not a DMD installation Root. DMD
executable was not found". I put "dmd.exe" as the compiler name.
Am I missing something, or doesn't Descent just not recognize the
compiler when it's been bundled with Tango?
O.

And no, it doesn't recognize the compiler when it's been bundled with
Tango. How should it do it? For now, in Windows, it recognized phobos by
searching it in src/phobos. Is there a standard directory layout for dmd
bundled with Tango?
Ary Borenszweig escribió:

Hi. I ran into a problem when adding a compiler. I have Tango which
contains the DMD compiler and giving Descent the path the Tango's bin
directory, it says "Target is not a DMD installation Root. DMD
executable was not found". I put "dmd.exe" as the compiler name.
Am I missing something, or doesn't Descent just not recognize the
compiler when it's been bundled with Tango?
O.

Better yet, make one with an installation wizard that could download and
install the D compiler (and maybe Tango, and maybe DDBG for Windows) for you.
This way, getting a full-featured IDE up and running should be a sinch for new
D users.
--
Best regards,
Vladimir mailto:thecybershadow gmail.com