www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Descent 0.4 released

reply Ary Manzana <ary esperanto.org.ar> writes:
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:
- Awsome, flexible formatter, almost as good as the one in JDT. This was 
done by Robert Fraser, which spent lots of hours making the formatter as 
flexible as possible. The formatter also allows templates like for, 
foreach, if, etc., to be well formatted (in 0.3 they were not).
- Spell checking, with two built-in dictionaries english dictionaries 
(US and UK). Enable from Windows -> Preferences -> General -> Editors -> 
Text Editors -> Spelling (select "D spelling engine" to configure).
- Better support for ddbg and gdb.
- Ddoc view. This is very helpful for ddoc writers to see how ddoc will 
look like as they type, without the need to compile the file and open a 
browser. Macros processing is fully supported, as well as sections and 
code sections (text between "---").
- Highlighting of all occurrences of the token under the cursor. This is 
less powerful than the one in JDT, but in a future it could be as 
powerful. Also, Ctrl+2 Ctrl+R allows to rename in-line all of these 
ocurrences.
- Todo tasks: "// TODO something" makes "TODO something" appear in the 
task list. This is configurable exactly like in JDT.
- trace.log viewer: where you can filter function names, sort according 
to different criterias, and show/hide fans-in and fans-out. You can 
recursively expand fans to see theyre associated function's fans.
- Updated parser for DMD 1.020 and 2.003. You can now select the 
compiler version for each project.

If you used Descent before, make sure to uninstall it first. Also delete 
the .project and .classpath files for the projects you had, otherwise 
you won't have todo tasks support. Also, don't forget to run eclipse 
with "-clean" so that the new version of the plugin appears in the 
update dialog.

The plugin still doesn't integrate with a compiler. We are looking at 
the best way to seamlessly integrate it, so that compiling programs is 
as easy as it can be.

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
Aug 12 2007
next sibling parent Frank Benoit <keinfarbton googlemail.com> writes:
erm, .. wow.
this is so cool.
:)
Aug 12 2007
prev sibling next sibling parent reply "Vladimir Panteleev" <thecybershadow gmail.com> writes:
On Sun, 12 Aug 2007 20:30:55 +0300, Ary Manzana <ary esperanto.org.ar> w=
rote:

 - trac: http://www.dsource.org/projects/descent/report?action=3Dnew

I noticed that visiting the above link gives me a "Forbidden" error:
 REPORT_CREATE privileges are required to perform this operation

So, I decided to give Descent a shot, and tried to import my current pro= ject (created a new project based on an existing source directory). Howe= ver, after clicking "Finish", Eclipse seemed to freeze and started eatin= g tons of resources. I almost gave up on it finishing, when it finally "= unfroze". Given that I was running Eclipse in a Linux VM (although my ho= st is a decent machine), and the project being fairly sizeable (over 800= 0 lines of code), the ~5 minute analysis time doesn't sound too unreason= able - however, is it possible to add some kind of visual feedback, or i= f not - detect that the processing may take a long time and display a wa= rning or something? Anyway, this is really something - especially the code formatter :D As a minor feature request, I'd like to see an option to format classes = like this: class Foo { int x; private: int y; public: int z; } This indentation style is used quite often in Phobos, and I use it as we= ll. I guess it might require adding "negative" indentation for certain eleme= nts to the formatter engine... From what I understood, things like code completion, "Open Declaration"= and stuff pertaining to Quick Assist isn't implemented yet, is it? If a= ny of it is supposed to be working, it didn't work for me... -- = Best regards, Vladimir mailto:thecybershadow gmail.com
Aug 12 2007
next sibling parent reply Ary Manzana <ary esperanto.org.ar> writes:
Vladimir Panteleev escribio':
 On Sun, 12 Aug 2007 20:30:55 +0300, Ary Manzana <ary esperanto.org.ar> wrote:
 
 - trac: http://www.dsource.org/projects/descent/report?action=new

I noticed that visiting the above link gives me a "Forbidden" error:
 REPORT_CREATE privileges are required to perform this operation


Ok, now you should be able to do it.
 
 So, I decided to give Descent a shot, and tried to import my current project
(created a new project based on an existing source directory). However, after
clicking "Finish", Eclipse seemed to freeze and started eating tons of
resources. I almost gave up on it finishing, when it finally "unfroze". Given
that I was running Eclipse in a Linux VM (although my host is a decent
machine), and the project being fairly sizeable (over 8000 lines of code), the
~5 minute analysis time doesn't sound too unreasonable - however, is it
possible to add some kind of visual feedback, or if not - detect that the
processing may take a long time and display a warning or something?

I'll try to see why it takes so long. Even if it is a big project, it shouldn't take that long.
 
 Anyway, this is really something - especially the code formatter :D
 As a minor feature request, I'd like to see an option to format classes like
this:
 
 class Foo
 {
 	int x;
 
 private:
 	int y;
 
 public:
 	int z;
 }
 
 This indentation style is used quite often in Phobos, and I use it as well.
 I guess it might require adding "negative" indentation for certain elements to
the formatter engine...

I think this is doable. I'll ask Robert. :-)
 
  From what I understood, things like code completion, "Open Declaration" and
stuff pertaining to Quick Assist isn't implemented yet, is it? If any of it is
supposed to be working, it didn't work for me...

No, they don't work yet. Only the featues I mentioned are the new stuff. Regards, Ary
Aug 12 2007
parent reply Brad Anderson <brad dsource.org> writes:
Ary Manzana wrote:
 Vladimir Panteleev escribio':
 On Sun, 12 Aug 2007 20:30:55 +0300, Ary Manzana <ary esperanto.org.ar>
 wrote:

 - trac: http://www.dsource.org/projects/descent/report?action=new

I noticed that visiting the above link gives me a "Forbidden" error:
 REPORT_CREATE privileges are required to perform this operation


Ok, now you should be able to do it.

Um, I think you want to create a new ticket, not a report. http://www.dsource.org/projects/descent/newticket BA
Aug 12 2007
parent "Vladimir Panteleev" <thecybershadow gmail.com> writes:
On Mon, 13 Aug 2007 03:11:45 +0300, Brad Anderson <brad dsource.org> wrote:

 Um, I think you want to create a new ticket, not a report.

 http://www.dsource.org/projects/descent/newticket

Oh, that's right. I just clicked the link in the OP :) -- Best regards, Vladimir mailto:thecybershadow gmail.com
Aug 13 2007
prev sibling next sibling parent Robert Fraser <fraserofthenight gmail.com> writes:
Vladimir Panteleev Wrote:

 Anyway, this is really something - especially the code formatter :D
 As a minor feature request, I'd like to see an option to format classes like
this:
 
 class Foo
 {
 	int x;
 
 private:
 	int y;
 
 public:
 	int z;
 }
 
 This indentation style is used quite often in Phobos, and I use it as well.
 I guess it might require adding "negative" indentation for certain elements to
the formatter engine...
 

Not hard at all; I'll get on that!
Aug 13 2007
prev sibling parent reply "Simen Haugen" <simen norstat.no> writes:
"Vladimir Panteleev" <thecybershadow gmail.com> wrote in message 
news:op.twyuciosm02fvl irc.irastex.local...
On Sun, 12 Aug 2007 20:30:55 +0300, Ary Manzana <ary esperanto.org.ar> 
wrote:

 So, I decided to give Descent a shot, and tried to import my current 
 project (created a new project based on an existing source directory). 
 However, after clicking "Finish", Eclipse seemed to freeze and started 
 eating tons of resources. I almost gave up on it finishing, when it 
 finally "unfroze". Given that I was running Eclipse in a Linux VM 
 (although my host is a decent machine), and the project being fairly 
 sizeable (over 8000 lines of code), the ~5 minute analysis time doesn't 
 sound too unreasonable - however, is it possible to add some kind of 
 visual feedback, or if not - detect that the processing may take a long 
 time and display a warning or something?

I'm also having this problem on a project of about 5000 lines. It seems to kick in every now and then and lockes up for a couple of minutes.
Aug 21 2007
parent Ary Manzana <ary esperanto.org.ar> writes:
Simen Haugen wrote:
 "Vladimir Panteleev" <thecybershadow gmail.com> wrote in message 
 news:op.twyuciosm02fvl irc.irastex.local...
 On Sun, 12 Aug 2007 20:30:55 +0300, Ary Manzana <ary esperanto.org.ar> 
 wrote:
 
 So, I decided to give Descent a shot, and tried to import my current 
 project (created a new project based on an existing source directory). 
 However, after clicking "Finish", Eclipse seemed to freeze and started 
 eating tons of resources. I almost gave up on it finishing, when it 
 finally "unfroze". Given that I was running Eclipse in a Linux VM 
 (although my host is a decent machine), and the project being fairly 
 sizeable (over 8000 lines of code), the ~5 minute analysis time doesn't 
 sound too unreasonable - however, is it possible to add some kind of 
 visual feedback, or if not - detect that the processing may take a long 
 time and display a warning or something?

I'm also having this problem on a project of about 5000 lines. It seems to kick in every now and then and lockes up for a couple of minutes.

Do you mean it happens also after the project has been created? Vladimir was talking about the freeze at the project creation.
Aug 21 2007
prev sibling next sibling parent reply Witold Baryluk <baryluk smp.if.uj.edu.pl> writes:
Dnia Sun, 12 Aug 2007 15:30:55 -0200
Ary Manzana <ary esperanto.org.ar> napisa=B3/a:

 The Descent plugin for Eclipse provides an IDE for writing, launching=20
 and debugging code in D.

I just installed Descent 0.3 about 6 hour ago :) But easly upgraded to 0.4. Nice work.
 The new features for this release are:
 - Awsome, flexible formatter, almost as good as the one in JDT. This
 was done by Robert Fraser, which spent lots of hours making the
 formatter as flexible as possible. The formatter also allows
 templates like for, foreach, if, etc., to be well formatted (in 0.3
 they were not).

It is great. It's the BEST formatter i have ever seen. It is _first_ formater which is completly compatible with my coding style (JDT, CDT, gnu indent and many others always had some missing points).
 - Better support for ddbg and gdb.

More better. Now it is working for me (gdb with gdc).
 - Ddoc view. This is very helpful for ddoc writers to see how ddoc
 will look like as they type, without the need to compile the file and
 open a browser. Macros processing is fully supported, as well as
 sections and code sections (text between "---").

Useful. How about supporting this: /// Simple class class B { int x; /// position int y; /// ditto }
 - Highlighting of all occurrences of the token under the cursor. This
 is less powerful than the one in JDT, but in a future it could be as=20
 powerful. Also, Ctrl+2 Ctrl+R allows to rename in-line all of these=20
 ocurrences.

Nice but: void a() { int a; } int a; a =3D 5; ^ - puting cursor here, will highlight all "a"s. These feature needs more semantic knowledge. It will also be usefull in refactoring module.
 - trace.log viewer: where you can filter function names, sort
 according to different criterias, and show/hide fans-in and fans-out.
 You can recursively expand fans to see theyre associated function's
 fans.

Very useful.
 - Updated parser for DMD 1.020 and 2.003. You can now select the=20
 compiler version for each project.

Great. I have some projects in DMD 2.x and some in DMD 1.x, this feature is really nice. I have problem with seting paths to compiler dmd and phobos. Binary is in /usr/bin/dmd and phobos headers/source in /usr/lib/dmd/src/phobos/{std, c,...}, and configuration dialog have problems with this. Thanks. And keep going. --=20 Witold Baryluk MAIL: baryluk smp.if.uj.edu.pl, baryluk mpi.int.pl JID: movax jabber.autocom.pl
Aug 12 2007
parent Ary Manzana <ary esperanto.org.ar> writes:
Witold Baryluk escribió:
 Dnia Sun, 12 Aug 2007 15:30:55 -0200
 Ary Manzana <ary esperanto.org.ar> napisa³/a:
 
 The Descent plugin for Eclipse provides an IDE for writing, launching 
 and debugging code in D.

I just installed Descent 0.3 about 6 hour ago :) But easly upgraded to 0.4. Nice work.
 The new features for this release are:
 - Awsome, flexible formatter, almost as good as the one in JDT. This
 was done by Robert Fraser, which spent lots of hours making the
 formatter as flexible as possible. The formatter also allows
 templates like for, foreach, if, etc., to be well formatted (in 0.3
 they were not).

It is great. It's the BEST formatter i have ever seen. It is _first_ formater which is completly compatible with my coding style (JDT, CDT, gnu indent and many others always had some missing points).

Thank Robert. ;-)
 
 - Better support for ddbg and gdb.

More better. Now it is working for me (gdb with gdc).

Cool! Actually I've fixed it without knowing if it works or not (I have linux in a VM, but with Eclipse it dies)... So now I know it does work.
 
 
 - Ddoc view. This is very helpful for ddoc writers to see how ddoc
 will look like as they type, without the need to compile the file and
 open a browser. Macros processing is fully supported, as well as
 sections and code sections (text between "---").

Useful. How about supporting this: /// Simple class class B { int x; /// position int y; /// ditto }

"ditto"s are also supported. If you position the cursor over y, in the ddoc view it shows "position". Is that it or something else I'm missing?
 
 
 
 - Highlighting of all occurrences of the token under the cursor. This
 is less powerful than the one in JDT, but in a future it could be as 
 powerful. Also, Ctrl+2 Ctrl+R allows to rename in-line all of these 
 ocurrences.

Nice but: void a() { int a; } int a; a = 5; ^ - puting cursor here, will highlight all "a"s. These feature needs more semantic knowledge. It will also be usefull in refactoring module.

I know. As semantic analysis improves (actually, starts), this will become more powerful, as well as other things. But at least for long names it has a chance to work.
 
 
 - trace.log viewer: where you can filter function names, sort
 according to different criterias, and show/hide fans-in and fans-out.
 You can recursively expand fans to see theyre associated function's
 fans.

Very useful.
 - Updated parser for DMD 1.020 and 2.003. You can now select the 
 compiler version for each project.

Great. I have some projects in DMD 2.x and some in DMD 1.x, this feature is really nice. I have problem with seting paths to compiler dmd and phobos. Binary is in /usr/bin/dmd and phobos headers/source in /usr/lib/dmd/src/phobos/{std, c,...}, and configuration dialog have problems with this.

I didn't know that. So I'll make the standard library's source location configurable if a guess fails. But don't worry about this because this isn't used yet. We've just started to work on it... You'll have to compile using an external tool ( http://www.dsource.org/projects/descent/wiki/CompilingPrograms ) or use the command line. Thanks for the feedback!
 
 
 Thanks. And keep going.
 

Aug 12 2007
prev sibling next sibling parent reply Gregor Richards <Richards codu.org> writes:
Ary Manzana wrote:
 The plugin still doesn't integrate with a compiler. We are looking at 
 the best way to seamlessly integrate it, so that compiling programs is 
 as easy as it can be.

[Warning!! Shameless plug levels at critical!] May I suggest integrating with DSSS? This would make your job much easier, since you wouldn't have to worry about specific compiler quirks or differences in making libraries etc on different platforms. - Gregor Richards
Aug 12 2007
parent reply Robert Fraser <fraserofthenight gmail.com> writes:
Gregor Richards Wrote:

 Ary Manzana wrote:
 The plugin still doesn't integrate with a compiler. We are looking at 
 the best way to seamlessly integrate it, so that compiling programs is 
 as easy as it can be.

[Warning!! Shameless plug levels at critical!] May I suggest integrating with DSSS? This would make your job much easier, since you wouldn't have to worry about specific compiler quirks or differences in making libraries etc on different platforms. - Gregor Richards

That's certainly a good idea. However, since descent will be internally tracking changes, dependencies, etc., I'm not sure exactly how this'll work I was thinking that DSSS integration for libraries, (perhaps even for symbol lookup if that's feasible - so if a user enters an unrecognized symbol, they could click a button to look it up in all DSSS-installed libraries, automatically add the library to the build path, and automatically add the necessary imports to the source file... libraries already on the build path and modules internal to the project and other projects in the workspace will of course also be considered, like in the JDT). Integration with the net feature would be even crazier. Imagine how awesome (if not _that_ useful...) it'd be to enter "IMG_LoadPNG_RW" or something, have a red squiggle appear below it, click three times, and have DerlictSDL-Image automatically be downloaded (in the background), installed and added to the build path, and have the import statement added to the source file. And with all that it would be trivial to have the IDE generate "dsss.conf" files. If you have the time, I'd like to meet up at the conference to discuss all this. That being said, this is Ary's brainchild, so I'll leave the final say up to him. Also, looking over DSSS, it doesn't seem to internally keep lists of symbols, so the IDE would need to be aware of the DSSS paths and keep its own symbol:module mapings, perhaps in the workspace directory.
Aug 13 2007
parent reply Ary Manzana <ary esperanto.org.ar> writes:
Robert Fraser escribió:
 Gregor Richards Wrote:
 
 Ary Manzana wrote:
 The plugin still doesn't integrate with a compiler. We are looking at 
 the best way to seamlessly integrate it, so that compiling programs is 
 as easy as it can be.

[Warning!! Shameless plug levels at critical!] May I suggest integrating with DSSS? This would make your job much easier, since you wouldn't have to worry about specific compiler quirks or differences in making libraries etc on different platforms. - Gregor Richards

That's certainly a good idea. However, since descent will be internally tracking changes, dependencies, etc., I'm not sure exactly how this'll work I was thinking that DSSS integration for libraries, (perhaps even for symbol lookup if that's feasible - so if a user enters an unrecognized symbol, they could click a button to look it up in all DSSS-installed libraries, automatically add the library to the build path, and automatically add the necessary imports to the source file... libraries already on the build path and modules internal to the project and other projects in the workspace will of course also be considered, like in the JDT). Integration with the net feature would be even crazier. Imagine how awesome (if not _that_ useful...) it'd be to enter "IMG_LoadPNG_RW" or something, have a red squiggle appear below it, click three times, and have DerlictSDL-Image automatically be downloaded (in the background), installed and added to the build path, and have the import statement added to the source file. And with all that it would be trivial to have the IDE generate "dsss.conf" files. If you have the time, I'd like to meet up at the conference to discuss all this. That being said, this is Ary's brainchild, so I'll leave the final say up to him. Also, looking over DSSS, it doesn't seem to internally keep lists of symbols, so the IDE would need to be aware of the DSSS paths and keep its own symbol:module mapings, perhaps in the workspace directory.

I also like the idea of intergrating with dsss, but integrating with a compiler comes first.
Aug 13 2007
parent davidl <davidl 126.com> writes:
I created a patch for setting breakpoints. This patch fix a problem of n=
ot  =

being able to set breakpoint correctly when i get the binary moved to  =

somewhere which is not right under the ${workspace_loc} or something.

http://www.dsource.org/forums/viewtopic.php?p=3D16025#16025

there umm indentation lost, you can get my patch in this post
Aug 15 2007
prev sibling next sibling parent Lutger <lutger.blijdestijn gmail.com> writes:
Wow, this is becoming very nice, my compliments. I agree with everbody 
that the formatter is just awesome, never seen something like this.

DSSS integration would be a great feature (also for the net commands and 
doc building), I'd like to see that very much.
Aug 13 2007
prev sibling parent reply BCS <ao pathlink.com> writes:
Fun. Firt thing I try breaks

pragma(msg,">>" __FILE__ ":");

it compiles under DMD
Aug 13 2007
parent reply Ary Manzana <ary esperanto.org.ar> writes:
BCS escribió:
 Fun. Firt thing I try breaks
 
 pragma(msg,">>" __FILE__ ":");
 
 it compiles under DMD
 
 

That's a tricky one. You can only concatenate string literals in that way, but it happen that DMD's lexer replaces __FILE__ with the current filename and treat it is a string literal token (instead of identifier)... but Descent not. Well, now it does! :-) Uninstall Descent and reinstall it. Remeber to run eclipse with "-clean" so the update manager refreshes the update site. You should see the new version: 0.4.20070813 (the previous one was 0.4.20070812). Thanks for the bug report, Ary P.D.: It didn't break, there were just the red squiggles.
Aug 13 2007
parent BCS <ao pathlink.com> writes:
Reply to Ary,

 BCS escribió:
 
 Fun. Firt thing I try breaks
 
 pragma(msg,">>" __FILE__ ":");
 
 it compiles under DMD
 

That's a tricky one. You can only concatenate string literals in that way, but it happen that DMD's lexer replaces __FILE__ with the current filename and treat it is a string literal token (instead of identifier)... but Descent not.

I expected as much (IIRC, my lexer treat __FILE__, __LINE__ and friends as special tokens)
 
 Well, now it does! :-)

Thanks
 
 Uninstall Descent and reinstall it. Remeber to run eclipse with
 "-clean" so the update manager refreshes the update site. You should
 see the new version: 0.4.20070813 (the previous one was 0.4.20070812).
 
 Thanks for the bug report,
 Ary
 P.D.: It didn't break, there were just the red squiggles.
 

OK.... <rolls eyes> It didn't /actualy/ break anything :o) p.s. for code formatting; could we get a "add newline between static "else" and "static if" static if(foo == 1) bar(); else static if(foo == 2) baz(); else static if(foo == 3) bil(); else static if(foo == 4) bat(); it makes commenting stuff out faster sometimes //static if(foo == 1) bar(); //else static if(foo == 2) baz(); //else //static if(foo == 3) bil(); else static if(foo == 4) bat(); vs. //static if(foo == 1) bar(); /*else*/ static if(foo == 2) baz(); //else static if(foo == 3) bil(); else tatic if(foo == 4) bat();
Aug 13 2007