== 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 [[BR]] 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.