Here we collect what we want to do in the upcoming development (Helios) for Xtext.
We need to improve our build infrastructure as well as the general workspace setup.
The linking of the grammar should be reviewed and updated to reflect the latest changes in the API and to be a better example on how to use the different available APIs. Furthermore there are still some possible links, that are currently plain strings.
We should come up with a minimal set of style guidelines and conventions to minimize the necessary effort to merge changes and understand code.
Third party libs
Update the used libraries:
- Guice2: Multibinding support
- Google Collections 1.0: We currently use v 0.8 alpha. The API has changed significantly and we should update to 1.0.
- ANTLR 3.1.x: A bunch of fixes and new features has been incorporated into ANTLR 3.1. Especially the support for grammar imports seems to be interesting.
- Review the Scoping API. We should provide a sort of IScopeExtension with methods like #getElement(String):IScopedElement and #getElement(EObject):IScopedElement. This allows more sophisticated implementations of the API.
- Review the Highlighting API: Merge the *Configuration-Interfaces.
- Review the implementation of the Classpath URI. Try to find a solution, that allows this kind of URI even in other ResourceSet implementations.
- Introduce DSLs for some of the stable viewpoints of Xtext.
- Migrate to upcoming EMF Index changes
- Query Builder
- API / SPI separation
- Runtime Features
- Formatting API that allows to define rules depending on the current state of your model.
- Allow tracing / impact analysis to implement partial linking, validation etc.
- Introduce an official API that allows to define default values of the semantic model.
- UI Features
- AutoEdit: This would greatly improve the user experience and help to minimize the on-type-changes in the semantic model.
- QuickFixes, QuickAssist-API
- Advanced Navigation / Hyperlinking API: Find References, allow to define references by convention, etc.
- Highlighting: Allow to merge different highlighting styles that have been applied to the very same region of the model file.
- API that allows to define other views for the model in the Editor (comparable to viewpoints in the Outline)
- Xtext Grammar
- Terminal fragments: Reusable elements in terminal rules, that are not globally visible (see ANTLR Fragments)
- Aspects in production rules: Reuse different aspects of the grammar across various parser rules. One may think of infered EObjects that implement different interfaces such as Named, Documentable or FooContainer or BarReference. (You may call it a fragment).
- Allow a notation to call the super-definition of a overridden parser rule.
- Allow to define the default of an EEnum (even with an empty literal representation).
- Try to generate named opposite references for eContainer.
- Xtext Grammar Editor
- Tabbed Editor that visualizes the generated EPackages on other tabs. Maybe we should use other views for this aspect.
- Provide more validation
- Provide more semantic highlighting