我是Xtext和Xtend的新手,需要建议如何最好地解决下面的问题。
我正在尝试使用以下代码创建自定义自动完成提供程序:
class DomainmodelProposalProvider extends AbstractDomainmodelProposalProvider {
def override completePath_ContentPath(EObject model,
Assignment assignment,
ContentAssistContext context,
ICompletionProposalAcceptor acceptor) {
acceptor.accept(createCompletionProposal("/Root/hello/world", context))
acceptor.accept(createCompletionProposal("/Root/hello/xtext", context))
....
....
}
}
其中contentPath
可以来自xpath字符串列表,列表可以很大。更重要的是,我想进行渐进式自动填充,即如果用户输入/Root/h
,它将同时提供Root/hello/world
和/Root/hello/xtext
。但如果他输入/Root/hello/x
,则只会提供/Root/hello/xtext
。
战斗计划如下:
DomainmodelProposalProvider
中,获取允许列表列表的引用; 但是我陷入了第一步。我在哪里将外部文件的读取代码放在xtext项目中(我使用的是eclipse)?它应该充当Singleton并且只进行一次读取,如果我想在Xtend中编程,我该如何实现单例?
任何帮助将不胜感激!
答案 0 :(得分:0)
将其绑定到YourLanguageRuntimeModule.java中,然后@Inject到提案提供程序中。 Guice默认只创建一个,所以不要担心将其实现为单例。