在xtext documentation的Domainmodel示例中,您可以使用限定名称引用实体。例如,你可以写:
entity Post extends Org.eclipse.example.MyClass{
}
现在你也可以使用ctr +空格并获得辅助:所以上面的例子将是
entity Post extends //use content assist here
{
}
你会得到一个包含Org.eclipse.example.MyClass和Org.eclipse.example.YourClass (通知大写)的列表。假设两者都有定义。
当开始输入类名时,内容辅助就会消失。为了使其正常工作,您必须键入孔限定名称。现在这是因为我用大写字母开始我的包的名称在java中不是这样的情况,但在这个DSL中,情况不应该是这样的。
所以知道我怎么能自定义这个行为,所以内容辅助也适用于以大写字母开头的包?
更新:当以大写字母开头时,问题如下,自动完成将需要获取孔限定名称。因此,在您键入“O”的示例中,您将获得“Org.eclipse.example.MyClass,Org.eclipse.example.YourClass”,但是当您键入“M”时它会消失。当你将它改为小写(org.eclipse.example.MyClass)时,当你输入M时你得到'MyClass',当输入'o'时它会消失。
答案 0 :(得分:1)
您看到提案提供程序中的优化会产生负面影响。大写名称应该是简单名称的一部分(遵循Java命名约定)。调整内容辅助前缀匹配器是调整场景的正确方法。为此,您必须绑定org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher
的自定义impl或稍微不灵活但更容易实现:org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.DefaultLastSegmentFinder
。
答案 1 :(得分:0)
您应该查看有关case insensitive languages的这篇文章。 如果您需要不区分大小写的内容,则只需在mwe2工作流中修改内容辅助:
fragment = org.eclipse.xtext.generator.parser.antlr.ex.ca.ContentAssistParserGeneratorFragment {
options={
ignoreCase = true
}
}