2016-03-21 28 views
1

Ace Editor'ü kendi sorgu dilimin otomatik tamamlamasını desteklemeye çalışıyorum.Ace Editor Otomatik Tamamlama - iki adımda otomatik tamamlama

sorgu kendisi, ben kullanıcı 'şehir' ve 'renk' 'c' yazarak görebilirsiniz bekliyoruz Yukarıdaki durumda

city:newyork color:red color:blue 

altında gibi bir şeydir. Ve 'rengi' seçtikten sonra, öneri listesindeki iki seçeneği 'kırmızı' ve 'mavi'yi doğrudan görebilir.

getCompletions: function (editör, oturum, pos, önek, geri arama) işlevlerinin tüm argümanlarını kontrol ettim. Ama yine de bunu yapmanın daha iyi bir yolunu anlayamıyorum. Herhangi bir öneri takdir edilecektir.

cevap

0

Doğrudan veya ace editörleri varsayılan otomatik tamamlama yoluyla mümkün değil. Ancak gereksiniminizi tam olarak karşılayabilecek örnek bir kodum var. Adım 1: Sen editör nesnesi ve set seçenekleri oluşturmak zorunda: Eğer şartları konum gereği

ace.require("ace/ext/language_tools"); 
    var editor = ace.edit('div_id'); 
    editor.setTheme("ace/theme/textmate"); 
    editor.getSession().setMode("ace/mode/yaml"); 
    editor.getSession().setTabSize(4); 
    editor.getSession().setUseSoftTabs(true); 
    editor.setDisplayIndentGuides(true); 
    editor.setShowInvisibles(true); 
    editor.setShowPrintMargin(false); 
    editor.setOption("vScrollBarAlwaysVisible", true); 
    editor.setOptions({ 
     enableBasicAutocompletion: true, 
     enableLiveAutocompletion: true 
    }); 


var EditorWordCompleter = { 
    getCompletions: function(editor, session, pos, prefix, callback) { 
     getWordList(editor, session, pos, prefix, callback); 
     } 
    } 

var getWordList = function(editor, session, pos, prefix, callback) { 
    var wordList = []; 
    if(prefix === 'T') { 
     wordList.push('List of tasks'); 
    } 
    wordList = $.unique(wordList); 
    callback(null, wordList.map(function(word) { 
     return { 
      caption: word, 
      value: word 
     }; 
    })); 
} 

bunu değiştirin.