I'm looking for an example (in XText) of how to implement code completion on an user defined objects members. As far as I can see I need to use IScope, but how all this wires together is unclear.
Given that trait
is a user defined type, how do I go about building a grammar to code complete / validate the methods contained within String
when I type name.
?
trait String {
def toLowerCase(): String
def toUpperCase(): String
}
val name = new String()
name.toLowerCase()
Thanks
In my book on Xtext, "Implementing Domain-Specific Languages with Xtext and Xtend", https://www.packtpub.com/application-development/implementing-domain-specific-languages-xtext-and-xtend , there is a chapter about scoping for a "smaller" Java language (dealing also with inheritance). You can find the sources of examples here: https://github.com/LorenzoBettini/packtpub-xtext-book-examples
It highly depends on your grammar what you have to do to adopt scoping. Let us say you have a grammar like
then your scopeprovider would look like
You can find a blog series on the topic here:
https://web.archive.org/web/20130129085620/http://blogs.itemis.de/stundzig/archives/773