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

Javascript 在Ace编辑器中将我的值推到自动完成列表的顶部,javascript,jquery,ace-editor,Javascript,Jquery,Ace Editor,我使用的是一个定制的补足符,它使用jQuery.getJSON从服务器提取值 我的自定义补全将与local和snippets一起显示,我希望我的补全始终位于顶部。我想,score可以做到这一点,但不能像这样工作。我给分数的值是1000 var langTools = ace.require("ace/ext/language_tools"); editor = ace.edit("editor"); editor.setOptions({ enableBasicAutocompletio

我使用的是一个定制的补足符,它使用
jQuery.getJSON
从服务器提取值

我的自定义补全将与
local
snippets
一起显示,我希望我的补全始终位于顶部。我想,
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

确保您提供的填表比默认填表得分更高。默认的完成符都给出0分,所以类似于
{…,score:100+(c.score | | 0)}应该有效

在autocomplete.js()中根据距离对分数进行了额外处理。一些ace插件所做的(参见示例)是将分数设置为
Number.MAX\u VALUE
,这对我也适用:我的完成项显示在列表的顶部。

我的示例中有一个正在运行的项目,在
回调()中,它是返回分数的位置吗?我返回1000。分数是为每个完成单独定义的。在代码中,您可以将
score:c.score}
(在
json.map
)替换为
score:100+(c.score | 0)}
<代码>分数:1000}
也可以