Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.
Version 43 (modified by asterite, 17 years ago)
--

Welcome to Descent

Descent is an Eclipse plugin that provides an IDE for writing, launching and debugging code in the D programming language from Digital Mars.

Documentation

Some old documentation is here: http://www.prowiki.org/wiki4d/wiki.cgi?DescentUI

Also check out The Forum.

Features

  • Syntax highlighting.
  • Awsome, flexible formatter.
  • Folding.
  • Automatic closing of strings, brackets, chars and comments.
  • Code templates.
  • Syntax errors are shown with a reg squiggle.
  • Project Explorer.
  • Outline view.
  • Automatic generation of documentation comments (Params, Author, etc.).
  • Spell checking.
  • TODO tasks.
  • Ddoc view.
  • Highlighting of all occurrences of the current token under the cursor.
  • trace.log viewer
  • Runs and debugs programs within the IDE.

How the plugin is being made?

Various steps are being made in order to make the plugin functional:

  1. Port the DMD source code to Java. Instead of using some language processing tool like ANTLR, this has the following advantages:
    • Not having to understand the syntax in the digital mars webpage, which is constantly changing at a very speed rate.
    • Updates to the language are easily adopted by the plugin: just diff it :-)
    • No need to think of a model: Walter already took care of that (although the model is a bit changed in Descent)
  2. Bring all the functionality of JDT into this plugin... by copying the source code of JDT and making the necessary changes to reflect D code, not Java code. This in turn can be done in the following steps:
    1. Make an AST model like in JDT: http://help.eclipse.org/help32/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/dom/package-summary.html
    2. Copy a lot of classes from JDT to bring "Java like" functionality to the plugin. D is a superset of Java (except for annotations) so "Java" code written in D, changing the appropiate keywords and on, should work in the plugin. By this I mean: if only imports, classes, fields and methods are written in D, D is almost like Java.
    3. Update and add the necessary classes to support D, not Java.

This approach has one major drawback: until at least the "Java like" functionality is done, the plugin is useless: it's just a bunch of classes waiting to be assembled and finished to work properly together. Releases until this point have no sense. That's why there aren't updates regularily.

But I believe this approach is better than reinventing the wheel in the field of implementing an IDE for a specific language in Eclipse. The JDT team has made a great job, and their plugin has a lot of features which would be awsome to have in D editor, and it's much better to stand on the shoulders of giants instead of thinking the way of implementing those features from the beginning.

What to do next?

Now we are focusing in:

  • Making the build system.
  • Port DMD's semantic analysis.
  • Updating the Parser and AST nodes for error recovery (while parsing).
  • Copying the rewrite engine.

Contact Us

Here's where to reach those responsible for Descent:

  • The Forum
  • Via #d.descent at irc.freenode.org
  • Create tickets for suggestions, improvements, and things that don't work correctly