Note: This website is archived. For up-to-date information about D projects and development, please visit

Mmrnmhrm Developer Notes

Setting up the development environment:

  • Checkout the mmrnmhrm-build project into your workspace, and look at mrnmhrm-build/target to figure out the baseline requirements for the target platform. There is an Ant-target in the included build.xml file that can create a target platform (for automated builds), however, for a development environment, you dont need the delta-pack, and you will likely be interested in the SDK versions of the required bundles.
  • Checkout the mmrnmhrm.ui and mmrnmhrm.tests, and all required dependency projects into your workspace. You will need a Java 1.6 JVM for most projects. Java Compiler should automatically be setup (using project specific settings)
  • TODO: Setup a common Code Style, and or Java Compiler - Error/Warnings settings, and or Formatter settings?

Running the tests:

  • There is a shared launch configuration in mmrnmhrm.tests to run all the tests, named "Mmrnmhrm Tests ALL". It is should already be properly configured. (but for the record the required settings are: Runs all tests in mmrnmhrm.tests, JUnit 4 test runner, runs the workbench product, workspace and configuration area are cleared every time.)
  • DMD is required to run the tests. TODO: document how to configure the path for that.
  • TODO: split core, dtool, and UI tests?

Creating a new update site release:

Project architecture info and documentation:

Check the Thesis article for the Mmrnmrhm project:
The most relevant info available there is:

  • Chapter 2: Very basic overview of the Eclipse Platform, and the extension capabalities for an IDE. Noting new for Eclipse plug-in developers, and also not much use for newbies.
  • Chapter 3: General topics for the creation of feature-rich IDEs, Eclipse based or not, but heavily inspired on JDT. Has some use useful info.
  • Chapter 4: Details the implementation of Mmrnmhrm. Useful to get an overview of the internals of Mmrnmhrm.

Development Tasks on the TODO list:

  • Further integration with DLTK
    • Code Templates - shouldn't take too long
    • Call Hierarchy - shouldn't not be too complicated, but also I don't see as very useful.
  • Semantic engine improvements
    • Better find-ref - leave it for me (BrunoM)
    • Test cases - easy for anyone to contribute
  • Descent integration
    • Big question: should the development of the Mmrnmhrm custom semantic engine (aka dtool) be continued, or should DMD engine be used? (Descent's approach) Still unclear. A nice implementation of code completion using DMD's engine is necessary (for me at least) to prove DMD's engine worthiness.
  • Code formatter (problem: uses Descent code formatter uses Public AST and not DMD AST -> yet another AST to maintain, and also a potential performance issue)
  • Debugging and Descent's debugger
    • Some improvements could be made here, but I have to look into the capabilites of Descent's debugger further.
    • DLTK has some stuff to offer here, but is worth (haven't looked much into it).
  • Builder improvements: Interesting thing to have:
    • Support for _extended_ build folder
    • Module Dependency analysis, timestamp verification (for conditional compilation instead of full). Interesting but rebuild should handle the job now.
  • Parser error recovery improvements (useful for better code completion)
    • Given the ported nature of the parser, extensively adapting it is job adequate only for hardcore developer or Walter itself :/.
    • But some error recovery using wrappers should be possible already.