Mmrnmhrm Developer Notes
Thesis document for the Mmrnmrhm project: http://web.ist.utl.pt/bruno.d.o.medeiros/thesisdoc-v4final.pdf
The 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.
