如何在 Xtext 中编写自定义自动完成?
How to write custom autocompletion in Xtext?
我找不到任何相关信息,只有关于编写自定义自动完成建议的资源,这不是我想要的(或者是)?
语法
我们可以为此使用示例语法:
Model:
greetings+=Greeting*;
Greeting:
'Hello' name=ID '!';
问题
现在,当用户创建语法的新实例时,他必须
- 写"Hello"(并能完成)
- 必须写一个space
- 现在可以自动完成 "Name=ID"
但这不是我想要的
我想要的
- 当用户完成 "Hello" 时,我希望其余部分用默认示例填充,例如:"Hello World"
这可能吗?
这有一些来源吗?
研究这个的切入点在哪里?
我可以在完成后仅打印一些文本来存档吗?还是我需要用示例填充模型(我在哪里可以这样做)?
查看文档中的 "templates proposals" 部分。或者覆盖提案提供者
中的 complete_Greeting
class MyDslProposalProvider extends AbstractMyDslProposalProvider {
override complete_Greeting(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
acceptor.accept(createCompletionProposal("Hello World!",context))
super.complete_Greeting(model, ruleCall, context, acceptor)
}
}
我找不到任何相关信息,只有关于编写自定义自动完成建议的资源,这不是我想要的(或者是)?
语法
我们可以为此使用示例语法:
Model:
greetings+=Greeting*;
Greeting:
'Hello' name=ID '!';
问题
现在,当用户创建语法的新实例时,他必须
- 写"Hello"(并能完成)
- 必须写一个space
- 现在可以自动完成 "Name=ID"
但这不是我想要的
我想要的
- 当用户完成 "Hello" 时,我希望其余部分用默认示例填充,例如:"Hello World"
这可能吗? 这有一些来源吗? 研究这个的切入点在哪里? 我可以在完成后仅打印一些文本来存档吗?还是我需要用示例填充模型(我在哪里可以这样做)?
查看文档中的 "templates proposals" 部分。或者覆盖提案提供者
中的complete_Greeting
class MyDslProposalProvider extends AbstractMyDslProposalProvider {
override complete_Greeting(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
acceptor.accept(createCompletionProposal("Hello World!",context))
super.complete_Greeting(model, ruleCall, context, acceptor)
}
}