将我的值推到Ace编辑器中的自动完成列表顶部

时间:2015-01-13 20:09:07

标签: javascript jquery ace-editor

我使用的自定义完成符使用jQuery.getJSON从服务器中提取值。

我的自定义完成功能与localsnippets一同显示,我希望自己始终位于顶部。我在想score会这样做,但不会像这样工作。我给得分值为1000。

var langTools = ace.require("ace/ext/language_tools");
editor = ace.edit("editor");
editor.setOptions({
    enableBasicAutocompletion: true,
    enableLiveAutocompletion: true,
    enableSnippets: true
});
var myCompleter = {
    getCompletions: function(editor, session, pos, prefix, callback) {
        if (prefix.length === 0) {
            callback(null, []);
            return;
        }
        $.getJSON("/server/completions", function(json) {
            callback(null, json.map(function(c) {
                return {value: c.value, caption: c.caption, meta: c.meta, score:c.score};
            }));
        })
    }
};
langTools.addCompleter(myCompleter);

有什么想法吗?谢谢,/ w

2 个答案:

答案 0 :(得分:1)

确保您提供的完成分数高于默认分数。默认完成者都给出得分0,所以类似{..., score:100 + (c.score || 0)};的工作

答案 1 :(得分:0)

根据距离,对autocomplete.js(https://github.com/ajaxorg/ace/blob/4a55188fdb0eee9e2d3854f175e67408a1e47655/lib/ace/autocomplete.js#L488)中的分数进行了额外处理。一些ace插件所做的事情(例如参见https://github.com/ajaxorg/ace/blob/4a55188fdb0eee9e2d3854f175e67408a1e47655/lib/ace/mode/html_completions.js#L300)将得分设置为Number.MAX_VALUE,它也适用于我:我的完成位于列表的顶部。