如何在 Xtext 中编写自定义自动完成?

How to write custom autocompletion in Xtext?

我找不到任何相关信息,只有关于编写自定义自动完成建议的资源,这不是我想要的(或者是)?

语法

我们可以为此使用示例语法:

Model:
    greetings+=Greeting*;

Greeting:
    'Hello' name=ID '!';

问题

现在,当用户创建语法的新实例时,他必须

  1. 写"Hello"(并能完成)
  2. 必须写一个space
  3. 现在可以自动完成 "Name=ID"

但这不是我想要的

我想要的

  1. 当用户完成 "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)
    }

}