ace editor autocomplete启用

myEditor.setOptions({
        enableBasicAutocompletion: true,
        enableSnippets: true,
        enableLiveAutocompletion: true
    });

var
autoCompleteData = [{ "meta": "function", "caption": "addShape", "value": "addShape", "score": 1 }, { "meta": "function", "caption": "addShape.adc", "value": "addShape.adc", "score": 1 }, { "meta": "function", "caption": "addShape.ccc", "value": "addShape.ccc", "score": 1 }]; var tangideCompleter = { getCompletions: function (editor, session, pos, prefix, callback) { if (prefix.length === 0) { return callback(null, []); } else { return callback(null, autoCompleteData); } } } var langTools = ace.require("ace/ext/language_tools"); langTools.addCompleter(tangideCompleter);

最近做一个python在线策略,决定用ace editor,启用autocomplete方便编写python。

要引入ext/language_tools,添加completer,自定义的关键字格式是{ "meta": "function", "caption": "addShape", "value": "addShape", "score": 1 }。

如果要dot后面增加类似类的属性的autocomplete,需修改ext-language_tools中的ID_REGEX = /[a-zA-Z_0-9\$-\$.]/;

js中增加

myEditor.commands.on("afterExec", function (e, t) {
        if (e.command.name == "insertstring" && e.args == ".") {
            var all = e.editor.completers;
            //e.editor.completers = completers;
            e.editor.execCommand("startAutocomplete");
            e.editor.completers = all;
        }
    });

posted @ 2016-06-08 10:38  hyfwin  阅读(994)  评论(0编辑  收藏  举报