2017-06-15 16 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

    感謝ü這麼多基督教迪特里希你建議的回答是工作的罰款 –