Ace Editor自动完成 - 两步自动完成

时间:2016-03-21 10:33:34

标签: autocomplete ace-editor

我正在努力让Ace Editor支持我自己的查询语言自动完成功能。

查询本身就像下面的

city:newyork color:red color:blue

在上述情况下,我希望用户可以看到' city'和'颜色'在打字的时候' c'在他选择“颜色”后,他可以直接看到两个选项' red'和'蓝色'在建议清单中。

我检查了getCompletions的所有参数:function(editor,session,pos,prefix,callback)。但仍然无法找到更好的方法来做到这一点。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

直接或通过ace编辑器默认自动完成是不可能的。 但我有示例代码可能完全满足您的要求。 步骤1: 您必须创建编辑器对象并设置选项:

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
        };
    }));
}

请根据您的要求进行更改。