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

时间:2015-07-15 07:01:10

标签: autocomplete editor xtext

我只是无法找到有关此内容的任何内容,只有关于编写自定义自动完成提案的来源,这不是我想要的(或者是它)?

语法

我们可以使用示例语法:

Model:
    greetings+=Greeting*;

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

问题

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

  1. 写"你好" (并且可以完成它)
  2. 必须写一个空格
  3. 现在可以自动填写" Name = ID"
  4. 但这不是我想要的。

    我想要什么

    1. 当用户完成" Hello"时,我希望其余部分填写一个默认示例,例如:" Hello World"
    2. 这可能吗? 这有什么来源吗? 对此进行研究的切入点在哪里? 我可以在完成后打印一些文本来归档这个,或者我需要用一个例子来填充modell(我在哪里可以这样做)?

1 个答案:

答案 0 :(得分:5)

查看"模板提案"在文档中。或者覆盖提案提供商中的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)
    }

}