Mmrnmhrm 0.1 released

Bruno Medeiros brunodomedeiros+spam at com.gmail
Fri Aug 17 10:54:39 PDT 2007


This is the announcement of the first public release of Mmrnmhrm.
What is Mmrnmhrm? Mmrnmhrm (pronounced mer-nem-herm :P ) is an Eclipse 
IDE I've been working on, partially based on Descent, and aimed at 
bringing semantic IDE functionality (such as code completion, find 
definition, find references, etc.) to D.
This release (0.1) features basic IDE features, plus a working 
find-definition functionality (with editor hyperlinking), text hovering 
for definitions and references, and code completion. Here are some 
screenshots:
http://svn.dsource.org/projects/descent/downloads/mmrnmhrm_findref_hover1.png
http://svn.dsource.org/projects/descent/downloads/mmrnmhrm_codecompletion2.png

The find-definition and code-completion features are working well 
enough, but general IDE are not very extensive. Here's a detailed 
listing of features, and shortcomings:

== IDE features ==
New Project Wizard
Project Configuration Page
D Editor:
   Syntax Highlighting
   Content Outline
Syntax Highlighting configuration page
A Language Model supporting semantic features:
   Find Definition
   Code Completion
An AST Viewer (for IDE debugging purposes only)
-> (there is no builder support)

* D Language Model *
Here are some important notes about the language model:
   The language model is based on a source folders model like JDT
  -> but with Source Folders only, no library support, not even for the 
Standard Lib.
  -> the model is not automatically updated when there are resource 
changes. The model of a file is only updated automatically when the file 
is saved (or edited) from a Mmrnmhrm editor.
  -> If there are external resource changes one can update the entire 
model manually by pressing the Update Dee Model icon (button with the 
red D on the toolbar).

* Find Definition *
Locates any definition unit:
   Module, class, struct/union, variable, function parameter, template, 
template parameter, alias, typedef, named enums, enum members, unnamed 
enum members, named mixins, import aliases, import selections.
   -> Not supported: goto labels, version/debug identifiers
   Search scopes:
     Primary namespace/scope.
     Secondary namespace (where imports bring names);
     Super scope;
     Outer scope;
   -> Doesn't support/search: inside unnamed mixins, the scope of the 
with() statement, postcondition result defunit;

All kinds of references nodes supported except:
   -> Most expression nodes (including function calls). (I will try to 
support these next).
   -> special references (new, delete, this, super);
Some intrinsic/native types references are detected but there is nowhere 
to go.
   -> Does not do function or template overload resolution (if there are 
several matches, lists all homonyms).
   -> Some nodes that have some source range bugs (missing source range)

The Find Ref functionality is invoked by pressing F3 when in the Mmrnhrm 
D editor, or by clicking the Find Ref button placed in the toolbar. When 
using the toolbar button, Find Ref will work for in any text editor 
(including Descent's), however it won't be able to follow imports across 
modules, if the file is not on the build path of a Mmrnmhrm project. 
Find-ref is also available in the form of editor hyperlinking (hold Ctrl 
and select a reference with the mouse).

* Text Hover *
Text hover shows a text popup with some info (signature + DDoc) over the 
reference or definition under the mouse cursor.

* Code Completion *
Code completion
-> Has the same semantic power as find-ref to determine completions.
-> May not work 100% correctly (if at all) when a file has syntax 
errors. It does try to recover for some common syntax errors however.
-> Does not yet consider name shadowing.

== Installation ==
You can download Mmrnmhrm from here:
http://www.dsource.org/projects/descent/browser/downloads/mmrnmhrm-1.0
Install it by placing all latest version (0.1.0) jar files in the 
Eclipse plugin directory. Requires Eclipse 3.3 and JVM 1.5 or superior. 
Descent may or may not be installed as well, altough if it is, it's 
editor may take priority in opening .d files. (Note: if you edit the 
".project" file it is possible to have a project with both the Mmrnmhrm 
and Descent nature)

-- 
Bruno Medeiros - MSc in CS/E student
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D



More information about the Digitalmars-d-announce mailing list