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