我有一个自定义解析器规则,我在其中定义了所有关键字,例如_self,_for,_loop等。因此,如果我输入_s并单击Ctrl +空格键,它会显示_self.But我需要的甚至是虽然我键入self或SE,但它应该自动指定为_self.Is有可能吗?如果是这样,有人可以为此建议一个解决方案。提前致谢
答案 0 :(得分:0)
有许多事情需要注意
所以我们假设你有一个像
这样的语法Model:
greetings+=Greeting*;
Greeting:
'_self' name=ID '!';
和
之类的模型文件SE
然后错误恢复将正常工作" _self"将添加到提案列表
e.g。这非常幼稚的impl
import org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher;
public class MyPrefixMatcher extends FQNPrefixMatcher {
@Override
public boolean isCandidateMatchingPrefix(String name, String prefix) {
return super.isCandidateMatchingPrefix(name, prefix) || super.isCandidateMatchingPrefix(name, "_" + prefix);
}
}
并且不要忘记绑定
import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher
import org.xtext.example.mydsl4.ui.contentassist.MyPrefixMatcher
@FinalFieldsConstructor
class MyDslUiModule extends AbstractMyDslUiModule {
override Class<? extends PrefixMatcher> bindPrefixMatcher() {
return MyPrefixMatcher;
}
}
IAutoEditStrategy
/ AbstractEditStrategyProvider