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:
- Setup your workspace, checkout http://svn.dsource.org/projects/descent/downloads/mmrnmhrm/update-site/ , and the feature project, then using the Eclipse PDE UI, open site.xml and "Build All", then use SVN to commit the new files.
- TODO: store the update site in some place other than SVN maybe?
- TODO: create a development stream update site
Project architecture info and documentation:
Check the Thesis article for the Mmrnmrhm project: http://web.ist.utl.pt/bruno.d.o.medeiros/thesisdoc-v4final.pdf
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.
