www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - New little features in Descent

reply Ary Borenszweig <ary esperanto.org.ar> writes:
Hi!

I ported some code and features from Eclipse 3.4 and 3.5 to Descent, 
which are already present in the Java Development Toolkit for Eclipse 
(JDT). These features are:

- The popup is nicer when hovering a symbol, showing it's icon and 
allowing to open the ddoc view or the declaration.
- The popup also shows compile-time values of constant variables and 
enum members when available.
- The completion proposal list is nicer, showing the declaring type or 
module in grey (it's cleaner to the eyes). Also fields and methods are 
separated by ":" from their type.
- When hovering a method with ctrl hold, two options appear: "Open 
Declaration" and "Open Implementation". The first one just jumps to the 
method declaration. The second one opens a popup showing the classes or 
interfaces that implement that method, allowing you to quickly navigate 
to one of them. This is very useful when programming to interfaces.

Here's a video showing all of these things:

http://www.youtube.com/watch?v=Hy6-ppfq2pM

Enjoy!
Aug 17 2009
next sibling parent reply Piotrek <starpit tlen.pl> writes:
Ary Borenszweig pisze:
 Hi!
 
 I ported some code and features from Eclipse 3.4 and 3.5 to Descent, 
 which are already present in the Java Development Toolkit for Eclipse 
 (JDT). These features are:
 
 - The popup is nicer when hovering a symbol, showing it's icon and 
 allowing to open the ddoc view or the declaration.
 - The popup also shows compile-time values of constant variables and 
 enum members when available.
 - The completion proposal list is nicer, showing the declaring type or 
 module in grey (it's cleaner to the eyes). Also fields and methods are 
 separated by ":" from their type.
 - When hovering a method with ctrl hold, two options appear: "Open 
 Declaration" and "Open Implementation". The first one just jumps to the 
 method declaration. The second one opens a popup showing the classes or 
 interfaces that implement that method, allowing you to quickly navigate 
 to one of them. This is very useful when programming to interfaces.
 
 Here's a video showing all of these things:
 
 http://www.youtube.com/watch?v=Hy6-ppfq2pM
 
 Enjoy!

Thanks again! I don't know if it's a platform specific problem but I cannot update Descent on my Ubuntu. I get this message: An error occurred during provisioning. Failed to prepare partial IU: [R]descent.core 0.5.6.20090817. Cheers Piotrek
Aug 18 2009
parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
Piotrek wrote:
 Ary Borenszweig pisze:
 Hi!

 I ported some code and features from Eclipse 3.4 and 3.5 to Descent, 
 which are already present in the Java Development Toolkit for Eclipse 
 (JDT). These features are:

 - The popup is nicer when hovering a symbol, showing it's icon and 
 allowing to open the ddoc view or the declaration.
 - The popup also shows compile-time values of constant variables and 
 enum members when available.
 - The completion proposal list is nicer, showing the declaring type or 
 module in grey (it's cleaner to the eyes). Also fields and methods are 
 separated by ":" from their type.
 - When hovering a method with ctrl hold, two options appear: "Open 
 Declaration" and "Open Implementation". The first one just jumps to 
 the method declaration. The second one opens a popup showing the 
 classes or interfaces that implement that method, allowing you to 
 quickly navigate to one of them. This is very useful when programming 
 to interfaces.

 Here's a video showing all of these things:

 http://www.youtube.com/watch?v=Hy6-ppfq2pM

 Enjoy!

Thanks again! I don't know if it's a platform specific problem but I cannot update Descent on my Ubuntu. I get this message: An error occurred during provisioning. Failed to prepare partial IU: [R]descent.core 0.5.6.20090817. Cheers Piotrek

I can't enter dsource now. And yesterday I had to retry several times to upload the files. dsource is working very badly since yesterday, so that must be the problem. Please try again later. :)
Aug 18 2009
parent Piotrek <starpit tlen.pl> writes:
Ary Borenszweig pisze:
 
 I can't enter dsource now. And yesterday I had to retry several times to 
 upload the files. dsource is working very badly since yesterday, so that 
 must be the problem. Please try again later. :)

Works now! Yuppie! Cheers Piotrek
Aug 20 2009
prev sibling next sibling parent reply bobef <adsad askdfkasjflaflajf.asdasd> writes:
What is the status of Descent's ability to build D projects? Last few times I
checked I was unable to build my project so I was unable to use Descent,
despite its wonderful code-completion abilities. Also is it able to run my
build script (build.bat) and parse the output and create links to the errors?

Regards,
bobef

Ary Borenszweig Wrote:

 Hi!
 
 I ported some code and features from Eclipse 3.4 and 3.5 to Descent, 
 which are already present in the Java Development Toolkit for Eclipse 
 (JDT). These features are:
 
 - The popup is nicer when hovering a symbol, showing it's icon and 
 allowing to open the ddoc view or the declaration.
 - The popup also shows compile-time values of constant variables and 
 enum members when available.
 - The completion proposal list is nicer, showing the declaring type or 
 module in grey (it's cleaner to the eyes). Also fields and methods are 
 separated by ":" from their type.
 - When hovering a method with ctrl hold, two options appear: "Open 
 Declaration" and "Open Implementation". The first one just jumps to the 
 method declaration. The second one opens a popup showing the classes or 
 interfaces that implement that method, allowing you to quickly navigate 
 to one of them. This is very useful when programming to interfaces.
 
 Here's a video showing all of these things:
 
 http://www.youtube.com/watch?v=Hy6-ppfq2pM
 
 Enjoy!

Aug 19 2009
parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
bobef wrote:
 What is the status of Descent's ability to build D projects? Last few times I
checked I was unable to build my project so I was unable to use Descent,
despite its wonderful code-completion abilities. Also is it able to run my
build script (build.bat) and parse the output and create links to the errors?
 
 Regards,
 bobef

You can configure an external tool like dmd, rebuild, dsss, and when run it'll show you the errors in the console and allow you to jump to them. So the answer is yes. I'm also solve this soon: http://www.dsource.org/forums/viewtopic.php?p=22877
Aug 19 2009
parent Ary Borenszweig <ary esperanto.org.ar> writes:
Ary Borenszweig escribió:
 bobef wrote:
 What is the status of Descent's ability to build D projects? Last few 
 times I checked I was unable to build my project so I was unable to 
 use Descent, despite its wonderful code-completion abilities. Also is 
 it able to run my build script (build.bat) and parse the output and 
 create links to the errors?

 Regards,
 bobef

You can configure an external tool like dmd, rebuild, dsss, and when run it'll show you the errors in the console and allow you to jump to them. So the answer is yes. I'm also solve this soon: http://www.dsource.org/forums/viewtopic.php?p=22877

Solved! :)
Aug 20 2009
prev sibling next sibling parent Vincenzo Ampolo <vincenzo.ampolo gmail.com> writes:
Ary Borenszweig wrote:

 http://www.youtube.com/watch?v=Hy6-ppfq2pM

Thanks Ary, i was waiting these features from a long time. :)
Aug 19 2009
prev sibling parent reply Qian Xu <quian.xu stud.tu-ilmenau.de> writes:
Hi Ary,

well done.

Here is a small bug report about the code fomatter:


=============================
import tango.io.Stdout;
import tango.core.Exception;

void main(char[][] args)
{
    try
    {
        /* Do some stuff */
    }
    catch (IOException ex)
    {
        Stdout.formatln("Caught IOException!");
    /* Consequence: Clean up and possibly try again. */
    } catch (Exception ex)
    {
        Stdout.formatln("Caught unexpected exception!");
    /* Consequence: Die as gracefully as possible. */
    }
}
=============================

You can see, the first catch-block is placed from a new line, but the second
catch-block is not. Could you please fix this issue?

Thanks in advance.
Aug 26 2009
next sibling parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
Qian Xu wrote:
 Hi Ary,
 
 well done.
 
 Here is a small bug report about the code fomatter:
 
 
 =============================
 import tango.io.Stdout;
 import tango.core.Exception;
 
 void main(char[][] args)
 {
     try
     {
         /* Do some stuff */
     }
     catch (IOException ex)
     {
         Stdout.formatln("Caught IOException!");
     /* Consequence: Clean up and possibly try again. */
     } catch (Exception ex)
     {
         Stdout.formatln("Caught unexpected exception!");
     /* Consequence: Die as gracefully as possible. */
     }
 }
 =============================
 
 You can see, the first catch-block is placed from a new line, but the second
 catch-block is not. Could you please fix this issue?
 
 Thanks in advance.

The result I get, with brackets of try/catch/finally configured to the next line, is: import tango.io.Stdout; import tango.core.Exception; void main(char[][] args) { try { /* Do some stuff */ } catch(IOException ex) { Stdout.formatln("Caught IOException!"); /* Consequence: Clean up and possibly try again. */ } catch(Exception ex) { Stdout.formatln("Caught unexpected exception!"); /* Consequence: Die as gracefully as possible. */ } } What's your formatter configuration?
Aug 26 2009
next sibling parent Qian Xu <quian.xu stud.tu-ilmenau.de> writes:
Ary Borenszweig wrote:

 What's your formatter configuration?

I checked all "new line" options. My result was posted in previous post
Aug 26 2009
prev sibling parent reply Charles Hixson <charleshixsn earthlink.net> writes:
Ary Borenszweig wrote:
 Qian Xu wrote:
 Hi Ary,

 well done.

 Here is a small bug report about the code fomatter:


 =============================
 import tango.io.Stdout;
 import tango.core.Exception;

 void main(char[][] args)
 {
     try
     {
         /* Do some stuff */
     }
     catch (IOException ex)
     {
         Stdout.formatln("Caught IOException!");
     /* Consequence: Clean up and possibly try again. */
     } catch (Exception ex)
     {
         Stdout.formatln("Caught unexpected exception!");
     /* Consequence: Die as gracefully as possible. */
     }
 }
 =============================

 You can see, the first catch-block is placed from a new line, but the 
 second
 catch-block is not. Could you please fix this issue?

 Thanks in advance.

The result I get, with brackets of try/catch/finally configured to the next line, is: import tango.io.Stdout; import tango.core.Exception; void main(char[][] args) { try { /* Do some stuff */ } catch(IOException ex) { Stdout.formatln("Caught IOException!"); /* Consequence: Clean up and possibly try again. */ } catch(Exception ex) { Stdout.formatln("Caught unexpected exception!"); /* Consequence: Die as gracefully as possible. */ } } What's your formatter configuration?

/* Consequence: Clean up and possibly try again. */ } catch(Exception ex) I think he's saying the catch should have been on a line separate from the close bracket. (I've noticed that I need to do a lot of formatting manually with things like: if (....) { { being common. I just insert another tab, so it's no big deal, but it happens frequently. (I'd rather that you detected more parsing errors rather than spending your time fixing the formatting, but other people have other priorities.) P.S.: When using descent I've discovered that it's best to avoid emuns. It would be nice if that were fixed. Using them seems to lead to the entire IDE freezing.
Aug 26 2009
parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
Charles Hixson wrote:
 Ary Borenszweig wrote:
 Qian Xu wrote:
 Hi Ary,

 well done.

 Here is a small bug report about the code fomatter:


 =============================
 import tango.io.Stdout;
 import tango.core.Exception;

 void main(char[][] args)
 {
     try
     {
         /* Do some stuff */
     }
     catch (IOException ex)
     {
         Stdout.formatln("Caught IOException!");
     /* Consequence: Clean up and possibly try again. */
     } catch (Exception ex)
     {
         Stdout.formatln("Caught unexpected exception!");
     /* Consequence: Die as gracefully as possible. */
     }
 }
 =============================

 You can see, the first catch-block is placed from a new line, but the 
 second
 catch-block is not. Could you please fix this issue?

 Thanks in advance.

The result I get, with brackets of try/catch/finally configured to the next line, is: import tango.io.Stdout; import tango.core.Exception; void main(char[][] args) { try { /* Do some stuff */ } catch(IOException ex) { Stdout.formatln("Caught IOException!"); /* Consequence: Clean up and possibly try again. */ } catch(Exception ex) { Stdout.formatln("Caught unexpected exception!"); /* Consequence: Die as gracefully as possible. */ } } What's your formatter configuration?

/* Consequence: Clean up and possibly try again. */ } catch(Exception ex) I think he's saying the catch should have been on a line separate from the close bracket. (I've noticed that I need to do a lot of formatting manually with things like: if (....) { { being common. I just insert another tab, so it's no big deal, but it happens frequently. (I'd rather that you detected more parsing errors rather than spending your time fixing the formatting, but other people have other priorities.) P.S.: When using descent I've discovered that it's best to avoid emuns. It would be nice if that were fixed. Using them seems to lead to the entire IDE freezing.

If you can create a ticket so I can reproduce it, great. :)
Aug 26 2009
parent reply Charles Hixson <charleshixsn earthlink.net> writes:
Ary Borenszweig wrote:
 Charles Hixson wrote:
 Ary Borenszweig wrote:
 Qian Xu wrote:
 Hi Ary,

 well done.

 Here is a small bug report about the code fomatter:


 =============================
 import tango.io.Stdout;
 import tango.core.Exception;

 void main(char[][] args)
 {
     try
     {
         /* Do some stuff */
     }
     catch (IOException ex)
     {
         Stdout.formatln("Caught IOException!");
     /* Consequence: Clean up and possibly try again. */
     } catch (Exception ex)
     {
         Stdout.formatln("Caught unexpected exception!");
     /* Consequence: Die as gracefully as possible. */
     }
 }
 =============================

 You can see, the first catch-block is placed from a new line, but 
 the second
 catch-block is not. Could you please fix this issue?

 Thanks in advance.

The result I get, with brackets of try/catch/finally configured to the next line, is: import tango.io.Stdout; import tango.core.Exception; void main(char[][] args) { try { /* Do some stuff */ } catch(IOException ex) { Stdout.formatln("Caught IOException!"); /* Consequence: Clean up and possibly try again. */ } catch(Exception ex) { Stdout.formatln("Caught unexpected exception!"); /* Consequence: Die as gracefully as possible. */ } } What's your formatter configuration?

/* Consequence: Clean up and possibly try again. */ } catch(Exception ex) I think he's saying the catch should have been on a line separate from the close bracket. (I've noticed that I need to do a lot of formatting manually with things like: if (....) { { being common. I just insert another tab, so it's no big deal, but it happens frequently. (I'd rather that you detected more parsing errors rather than spending your time fixing the formatting, but other people have other priorities.) P.S.: When using descent I've discovered that it's best to avoid emuns. It would be nice if that were fixed. Using them seems to lead to the entire IDE freezing.

If you can create a ticket so I can reproduce it, great. :)

Understanding your problem, I still can't. I've just stopped using them. But since the change happened two or three times soon after I inserted enums into a relatively large program, and disappeared when I removed them, I'm rather certain about the cause. (Often it would freeze the IDE before I'd even saved the work, and when I reproduced it using constant ints of type (whatever) there wasn't any problem.) P.S.: When the problem was present I found it expedient to correct the problem using another text editor. The IDE would crash that quickly after the file opened.
Aug 26 2009
parent reply Charles Hixson <charleshixsn earthlink.net> writes:
I was just going over the code for my current project, and I noticed 
that I'd included an enum in it, which wasn't causing any problems.  So 
maybe it's been fixed.  (Also, maybe it's only if you say the compiler 
is D2.x.)

Charles Hixson wrote:
 Ary Borenszweig wrote:
 Charles Hixson wrote:
 Ary Borenszweig wrote:
 Qian Xu wrote:
 Hi Ary,

 well done.

 Here is a small bug report about the code fomatter:


 =============================
 import tango.io.Stdout;
 import tango.core.Exception;

 void main(char[][] args)
 {
     try
     {
         /* Do some stuff */
     }
     catch (IOException ex)
     {
         Stdout.formatln("Caught IOException!");
     /* Consequence: Clean up and possibly try again. */
     } catch (Exception ex)
     {
         Stdout.formatln("Caught unexpected exception!");
     /* Consequence: Die as gracefully as possible. */
     }
 }
 =============================

 You can see, the first catch-block is placed from a new line, but 
 the second
 catch-block is not. Could you please fix this issue?

 Thanks in advance.

The result I get, with brackets of try/catch/finally configured to the next line, is: import tango.io.Stdout; import tango.core.Exception; void main(char[][] args) { try { /* Do some stuff */ } catch(IOException ex) { Stdout.formatln("Caught IOException!"); /* Consequence: Clean up and possibly try again. */ } catch(Exception ex) { Stdout.formatln("Caught unexpected exception!"); /* Consequence: Die as gracefully as possible. */ } } What's your formatter configuration?

/* Consequence: Clean up and possibly try again. */ } catch(Exception ex) I think he's saying the catch should have been on a line separate from the close bracket. (I've noticed that I need to do a lot of formatting manually with things like: if (....) { { being common. I just insert another tab, so it's no big deal, but it happens frequently. (I'd rather that you detected more parsing errors rather than spending your time fixing the formatting, but other people have other priorities.) P.S.: When using descent I've discovered that it's best to avoid emuns. It would be nice if that were fixed. Using them seems to lead to the entire IDE freezing.

If you can create a ticket so I can reproduce it, great. :)

Understanding your problem, I still can't. I've just stopped using them. But since the change happened two or three times soon after I inserted enums into a relatively large program, and disappeared when I removed them, I'm rather certain about the cause. (Often it would freeze the IDE before I'd even saved the work, and when I reproduced it using constant ints of type (whatever) there wasn't any problem.) P.S.: When the problem was present I found it expedient to correct the problem using another text editor. The IDE would crash that quickly after the file opened.

Aug 26 2009
parent Ary Borenszweig <ary esperanto.org.ar> writes:
If you say the compiler is D2.x the world explodes. :)

But I'm very close to finishing porting the code from D2.

Charles Hixson escribió:
 I was just going over the code for my current project, and I noticed 
 that I'd included an enum in it, which wasn't causing any problems.  So 
 maybe it's been fixed.  (Also, maybe it's only if you say the compiler 
 is D2.x.)
 
 Charles Hixson wrote:
 Ary Borenszweig wrote:
 Charles Hixson wrote:
 Ary Borenszweig wrote:
 Qian Xu wrote:
 Hi Ary,

 well done.

 Here is a small bug report about the code fomatter:


 =============================
 import tango.io.Stdout;
 import tango.core.Exception;

 void main(char[][] args)
 {
     try
     {
         /* Do some stuff */
     }
     catch (IOException ex)
     {
         Stdout.formatln("Caught IOException!");
     /* Consequence: Clean up and possibly try again. */
     } catch (Exception ex)
     {
         Stdout.formatln("Caught unexpected exception!");
     /* Consequence: Die as gracefully as possible. */
     }
 }
 =============================

 You can see, the first catch-block is placed from a new line, but 
 the second
 catch-block is not. Could you please fix this issue?

 Thanks in advance.

The result I get, with brackets of try/catch/finally configured to the next line, is: import tango.io.Stdout; import tango.core.Exception; void main(char[][] args) { try { /* Do some stuff */ } catch(IOException ex) { Stdout.formatln("Caught IOException!"); /* Consequence: Clean up and possibly try again. */ } catch(Exception ex) { Stdout.formatln("Caught unexpected exception!"); /* Consequence: Die as gracefully as possible. */ } } What's your formatter configuration?

/* Consequence: Clean up and possibly try again. */ } catch(Exception ex) I think he's saying the catch should have been on a line separate from the close bracket. (I've noticed that I need to do a lot of formatting manually with things like: if (....) { { being common. I just insert another tab, so it's no big deal, but it happens frequently. (I'd rather that you detected more parsing errors rather than spending your time fixing the formatting, but other people have other priorities.) P.S.: When using descent I've discovered that it's best to avoid emuns. It would be nice if that were fixed. Using them seems to lead to the entire IDE freezing.

If you can create a ticket so I can reproduce it, great. :)

Understanding your problem, I still can't. I've just stopped using them. But since the change happened two or three times soon after I inserted enums into a relatively large program, and disappeared when I removed them, I'm rather certain about the cause. (Often it would freeze the IDE before I'd even saved the work, and when I reproduced it using constant ints of type (whatever) there wasn't any problem.) P.S.: When the problem was present I found it expedient to correct the problem using another text editor. The IDE would crash that quickly after the file opened.


Aug 26 2009
prev sibling parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
Qian Xu escribió:
 Hi Ary,
 
 well done.
 
 Here is a small bug report about the code fomatter:

(snip)
 Thanks in advance.

I just uploaded a new version that fixes this. Also the new version partially supports D2: semantic analysis is far from perfect but features like autocompletion and go to definition should (but might not) work.
Aug 30 2009
parent Qian Xu <quian.xu stud.tu-ilmenau.de> writes:
Ary Borenszweig wrote:

 Qian Xu escribió:
 Hi Ary,
 
 well done.
 
 Here is a small bug report about the code fomatter:

(snip)
 Thanks in advance.

I just uploaded a new version that fixes this. Also the new version partially supports D2: semantic analysis is far from perfect but features like autocompletion and go to definition should (but might not) work.

great, you made my day!! thanks again qian
Aug 30 2009