2017-06-15 49 views
0

我有一个自定义分析程序规则,我在其中定义了所有关键字,如_self,_for,_loop等。因此,如果我键入_s并单击Ctrl +空格键,它会显示_self。但我所要求的是,即使我输入self或SE,它应该自动分配为_self。是否有可能?如果是这样,任何人都可以请建议一个解决方案。在此先感谢自动对齐Xtext中的数据

回答

0

有许多东西要祈祷,注意

  1. 需要有一个建议,只有一个建议。否则,用户必须选择要应用的prosal并没有自动插入需要的地方
  2. 的建议是基于错误恢复创建,所以你可能无法得到建议您正在寻找所有

所以让假设你有一个像

Model: 
    greetings+=Greeting*; 

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

语法和像

SE 

模型文件然后错误恢复将正常工作的一个“_self”的提案将被添加到提案列表中

  1. 建议根据模型中的当前前缀进行过滤。那将是你可以开始自定义的地方。

例如这很幼稚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; 
    } 

} 
  • 还有另外一个功能,不使用在所有的建议,但实际上被键入的文本如果它能够识别某些东西,那么可以用其他东西替换它。这个功能被称为“自动编辑”。在XTEXT这样做的扩展点是IAutoEditStrategy/AbstractEditStrategyProvider
  • +0

    嗨基督教迪特里希,u能请建议另一种方式 –

    +0

    不知道你的问题是什么 –

    +0

    感谢ü这么多基督教迪特里希你建议的回答是工作的罚款 –